我刚刚开始,我希望我遵守所有规则。
我有一个字典,其键值对为{..., 'CL': 'León', ...}
,与西班牙语区域(即“CL”)的缩写相匹配,每个字符对应一个城市(即León)。我加入了
# _*_ coding: utf-8 _*_
一开始所以我能够使用像tildes这样的utf字符。问题在于,当我打印出单个值时,一切顺利,输出包括正确的波形:
print cities['CL']
然而,当我打印出整个字典时:
print cities
我有双字节十六进制字符,在本例中为\xc3\xb3
。
这是为什么? 提前谢谢。
答案 0 :(得分:0)
对于字节字符串,还有另一种特定于python的编码:string-escape
>>> d = {'a' : 'тест', 'b': 'тост'}
>>> print repr(d).decode('string_escape')
{'a': 'тест', 'b': 'тост'}
Python 2 print
语句调用其参数到string的转换。默认情况下,当此值包含非ascii字符时,它们将被转义。
我们可以从repr()
内置和unescape借用another SO post获取此代表。
但是,如果值是正确的unicode字符串,例如前缀为u
的字符串常量,则它们的表示和解码会有所不同。
>>> d = {'a' : u'тест', 'b': u'тост'}
>>> print d
{'a': u'\u0442\u0435\u0441\u0442', 'b': u'\u0442\u043e\u0441\u0442'}
>>> print repr(d).decode("unicode-escape")
{'a': u'тест', 'b': u'тост'}