将unicode值转换为字典中的字符串

时间:2013-07-12 06:16:45

标签: python

我正在尝试将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': 'ó'}

2 个答案:

答案 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
ó