2013-09-30 29 views
2

舉個例子,在Linux下的Python 2.7.3我已經unicoded characer E(急性拉丁小寫字母E)和我嘗試將其顯示爲E:如何顯示unicoded字典在字典中的值

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

從文檔和幾個類似的問題,搜索答案後,我還沒有找到答案。如果有人能夠給我一個清楚的例子說明如何正確地做到這一點,我將不勝感激。

+0

你實際上從來沒有打印任何東西,你要求repl給你一些東西的代表。嘗試使用'print'和'repr()'來看看我的意思! – hop

回答

2

你有實際嘗試打印的價值,而不是他們在字典或列表

例如:

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

謝謝,這回答我的問題。恐怕我已經簡化了我的問題。我將重新制定併發佈一個新問題來解決我所遇到的實際問題。它實際上與打印無關,但當使用MySQL插入列值時,需要使用正常字符串時使用unicode類型的字典值。 – sauli

0

解釋器輸出對象的字符串表示。正如其他答案所述,如果您打印該值,您將顯示正確的字符。

否則就必須建立自己的字符串:

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

在Python,打印dict,將打印鍵/值repr不是他們str。要打印你想要使用這個片段的方式:

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

實驗值:在Python 2的Unicode字符串repr用引號括起來,但他們的str不大,去掉單引號,如果你不希望他們。