2

例如,在 Linux Python 2.7.3 中,我在字典中有未编码的字符 é(带尖音的拉丁小写字母 E),我尝试将其显示为 é:

>>> mydict = {'mykey':u'é'}
>>> mydict.values()
[u'\xe9']
>>> mydict['mykey']
u'\xe9'
>>> str(mydict.values())
"[u'\\xe9']
>>> print mydict.values()
[u'\xe9']

事实上,当值是 utf-8 编码时,我面临同样的挑战:

>>> cdict ={'key2':'é'}
>>> cdict
{'key2': '\xc3\xa9'}
>>> print cdict.values()
['\xc3\xa9']
>>> cdict['key2']
'\xc3\xa9'

在从文档和几个类似问题中搜索答案后,我还没有找到答案。如果有人能给我一个清楚的解释,并举例说明如何正确地做到这一点,我将不胜感激。

4

3 回答 3

2

您必须实际尝试打印值,而不是它们所在的字典或列表。

例如:

>>> mydict = {'mykey':u'é'}
>>> for value in mydict.values(): 
...   print value
... 
é
于 2013-09-30T14:28:38.867 回答
0

在 Python 中,打印 adict将打印其键/值repr而不是它们的str. 要使用此代码段打印您想要的方式:

print "{%s}" % ", ".join("%s: '%s'" % pair for pair in mydict.items())

Obs.:在 Python 2 中,unicode 字符串repr被引号包围,但它们str不是,如果你不想要它们,请删除单引号。

于 2013-09-30T14:35:16.480 回答
0

解释器输出对象的字符串表示。正如其他答案所述,如果您打印该值,您将正确显示该字符。

否则,您将不得不自己构建字符串:

>>> mydict = {'mykey':u'é', 'myotherkey': 'x'}
>>> print '\n'.join(u"{}: {}".format(*pair) for pair in mydict.items())
mykey: é
myotherkey: x
于 2013-09-30T14:33:11.537 回答