我正在尝试将unicode值转换为字典中的字符串,因为我已经编写了一个脚本来转换字符串中的值,如
value = {'a':u'a','b':u'ó'}
for key,valu in zip(value.keys(),value.values()):
if type(valu) is unicode:
print " unicode",valu
val=valu.encode('utf-8')
print " encode value",val
value[key] = val
print "dictionary return value ",value
但是它提供了意想不到的结果
{'a': 'a', 'b': '\xc3\xb3'}
但它应该像
{'a': 'a', 'b': 'ó'}
答案 0 :(得分:4)
等等,什么?
我正在尝试将unicode值转换为字典中的字符串
行
为此我编写了一个脚本来转换字符串中的值,如
value = {'a':u'a','b':u'ó'}
但是,它从字符串值映射到unicode值,而不是从unicode映射到字符串。调用映射“值”并不是一个非常好的选择。
for key,valu in zip(value.keys(),value.values()):
这可以写成
for k, v in value.items():
接下来的一点很奇怪:
if type(valu) is unicode:
总是不是吗?你在dict中只输入了unicode值,为什么要检查?
val=valu.encode('utf-8')
好的,现在你把它变成了一个字符串。我不明白为什么。
value[key] = val
所以现在你的值是从字符串到字符串的映射。那是你想要的吗?
但它给出了意想不到的结果
{'a': 'a', 'b': '\xc3\xb3'}
不,这是上述代码的预期输出。你真正想做的事情还不清楚。你说你想从unicode转换为字符串,你已经用unicode值完成了,所以也许这个是你想要的。我不清楚。
但应该是这样的
{'a': 'a', 'b': 'ó'}
然后你需要使用Python 3.: - )
我建议您查看unicode + python标记中的热门问题:
https://stackoverflow.com/questions/tagged/python+unicode
还有关于Unicode的博客文章:http://regebro.wordpress.com/2011/03/23/unconfusing-unicode-what-is-unicode/
答案 1 :(得分:0)
就是这样。您已成功将unicode值转换为字符串。
由于它是非ASCII字符,value[b]
的值为'\xc3\xb3'
,这是ó的utf-8字面值。
如果您使用打印,
>>> print value[b]
>>> ó
这是因为print
尝试通过编码Unicode字符串来显示非ASCII字符。
考虑一下:
>>> abc = 'ó'
>>> abc
'\xc3\xb3'
>>> print abc
ó