# -*- 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