Python 双字节十六进制值

Python 双字节十六进制值,python,python-2.7,utf-8,Python,Python 2.7,Utf 8,我只是从这里开始,我希望我能遵守所有的规则。 我有一本字典,它的键值对是{…,'CL':'León',…}将西班牙语地区(即'CL')的缩写匹配到每个地区的一个城市(即León)。我包括了这一行 # _*_ coding: utf-8 _*_ 开始时,我可以使用像tildes这样的utf字符。问题是,当我打印出单个值时,一切都进行得很顺利,并且输出正确地包含了波浪形: print cities['CL'] 但是,当我将整本词典打印为: print cities 我有双字节十六进制字符,在本

我只是从这里开始,我希望我能遵守所有的规则。 我有一本字典,它的键值对是
{…,'CL':'León',…}
将西班牙语地区(即'CL')的缩写匹配到每个地区的一个城市(即León)。我包括了这一行

# _*_ coding: utf-8 _*_
开始时,我可以使用像tildes这样的utf字符。问题是,当我打印出单个值时,一切都进行得很顺利,并且输出正确地包含了波浪形:

print cities['CL']
但是,当我将整本词典打印为:

print cities
我有双字节十六进制字符,在本例中是
\xc3\xb3

为什么会这样?
提前感谢。

对于字节字符串,还有另一种特定于python的编码:
字符串转义

>>> d = {'a' : 'тест', 'b': 'тост'}
>>> print repr(d).decode('string_escape')
{'a': 'тест', 'b': 'тост'}
Python2
print
语句调用其参数到字符串的转换。默认情况下,当此值包含非ascii字符时,将对其进行转义

我们可以从
repr()
内置和unescape借用中获得此表示

但是,如果值是正确的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'тост'}

有趣的问题,我的朋友,结帐可能的重复,这也是:不相关的可能重复:人们通常使用
-*-
,而不是
-*
。此约定来自Emacs。Python不在乎,只要它创建
编码:
编码=
,所以它并没有真正的区别,这只是供参考