如何显示unicode字典值

时间:2013-09-30 14:23:04

标签: python unicode dictionary utf-8

作为一个例子,在Linux Python 2.7.3中,我在字典中有单独的characeré(LATIN SMALL LETTER E WITH ACUTE),我尝试将其显示为é:

>>> 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'

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

3 个答案:

答案 0 :(得分:2)

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

例如:

>>> mydict = {'mykey':u'é'}
>>> for value in mydict.values(): 
...   print value
... 
é

答案 1 :(得分:0)

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

否则你必须自己构建字符串:

>>> mydict = {'mykey':u'é', 'myotherkey': 'x'}
>>> print '\n'.join(u"{}: {}".format(*pair) for pair in mydict.items())
mykey: é
myotherkey: x

答案 2 :(得分:0)

在Python中,打印dict会打印其键/值repr而非str。要打印您想要的方式,请使用以下代码段:

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

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