# -*- coding: utf-8 -*-
s = u'ö'
d = {'s': s}
print d
我得到{'s':u'\ xf6'},這不是我想要的,而我希望它是{'s':u'ö 「}。 我該怎麼辦...字典中的unicode編碼不正確[python]
# -*- coding: utf-8 -*-
s = u'ö'
d = {'s': s}
print d
我得到{'s':u'\ xf6'},這不是我想要的,而我希望它是{'s':u'ö 「}。 我該怎麼辦...字典中的unicode編碼不正確[python]
看看這樣的事情太可怕了一段代碼可以幫助:
def pretty(mydict):
string = u'{'
nkeys = len(mydict.keys())
for i, key in enumerate(sorted(mydict.keys())):
item = [key, mydict[key]]
for j in range(2):
if type(item[j]) in (str, unicode):
item[j] = ['', 'u'][type(item[j]) == unicode]+"'"+item[j]+"'"
else:
item[j] = str(item[j])
string += item[0] + ': ' + item[1]
if i < nkeys-1:
string += ', '
string += '}'
return string
s = u'ö'
d = {'s': s}
print pretty(d)
我爲自己感到羞恥。但也應該輸出,
{'s': 'ö'}
我希望它的作品,我只有Python 3的安裝在我的筆記本電腦和我檢查這個就repl.it網站。
請注意,這只是一個基本的答案,每次使用unicode字符串時,軟件都有責任使用u''
。即如果你這樣做,
d['test'] = 'ê' # instead of u'ê'
然後d.pretty()會拋出一個錯誤。
另請注意,它不適用於嵌套對象,即d[1] = [1, u'ö']
將不會顯示您想要的「ö」。
你是什麼意思「不是我想要的?」 u'ö' == u'\xf6'
試試這個:
print d['s']
# ö
print ord(d['s'])
# 246
改爲使用Python 3。 – mhawke
我也想要..但這個項目使用一些第三方庫沒有完整的蟒蛇3支持.. – Lebs
這實際上是一個問題?如果你打印(d ['s']),它會打印出'ö' – MikeTGW