【问题标题】:double byte hex values双字节十六进制值
【发布时间】:2017-08-08 16:10:55
【问题描述】:

我只是从这里开始,我希望我遵守所有规则。 我有一本字典,其键值对为{..., 'CL': 'León', ...},将西班牙地区的缩写(即“CL”)与每个城市的一个城市(即莱昂)相匹配。我包括了这一行

# _*_ coding: utf-8 _*_

一开始我就可以使用 utf 字符,比如波浪线。问题是,当我打印出单个值时,一切都很顺利,并且输出正确地包含了波浪线:

print cities['CL']

但是,当我将整个字典打印为:

print cities

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

这是为什么? 提前致谢。

【问题讨论】:

标签: python python-2.7 utf-8


【解决方案1】:

对于字节字符串,还有另一种特定于 python 的编码:string-escape

>>> d = {'a' : 'тест', 'b': 'тост'}
>>> print repr(d).decode('string_escape')
{'a': 'тест', 'b': 'тост'}

Python 2 print 语句调用将其参数转换为字符串。默认情况下,当此值包含非 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'тост'}

【讨论】:

    猜你喜欢
    • 2015-08-08
    • 2017-09-13
    • 1970-01-01
    • 2015-01-14
    • 2011-10-28
    • 2011-10-24
    • 2023-03-14
    • 2019-07-27
    • 2013-05-13
    相关资源
    最近更新 更多