您 已经拥有了价值 。Python只是通过为您提供ASCII友好的表示形式来尝试简化 调试 。在解释器中回显值会为您提供调用repr()
结果的结果。
换句话说,您正在将值的 表示 与值本身混淆。该表示旨在安全地复制和粘贴,而不必担心其他系统如何处理非ASCII代码点。因此,使用了Python字符串文字语法,所有不可打印的和非ASCII字符都由\xhh
和\uhhhh
转义序列代替。将这些字符串粘贴回Python字符串或交互式Python会话中,将再现完全相同的值。
如此ü
已被替换\xfc
,因为这是带有DIAERESIS代码点的U + 00FC拉丁文小写字母U的 Unicode代码 点。
如果您的终端配置正确,则可以使用print
,Python会将Unicode值编码到您的终端编解码器中,从而在终端显示中显示非ASCII字形:
>>> u'Fortuna Düsseldorf'
u'Fortuna D\xfcsseldorf'
>>> print u'Fortuna Düsseldorf'
Fortuna Düsseldorf
如果为终端配置了UTF-8,则还可以在显式编码后将UTF-8字节直接写入终端:
>>> u'Fortuna Düsseldorf'.encode('utf8')
'Fortuna D\xc3\xbcsseldorf'
>>> print u'Fortuna Düsseldorf'.encode('utf8')
Fortuna Düsseldorf
另一种方法是升级到Python 3;有repr()
只使用针对没有可打印的字符的码点的转义序列(控制码,保留码点,替代物,等等;如果码点是不是一个空间,但在下降C*
或Z*
一般类别,它被转义)。新ascii()
功能repr()
仍然为您提供Python 2的行为。