0

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

2 回答 2

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:

不是一直吗?您在字典中只输入了 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/

于 2013-07-12T06:42:54.147 回答
0

而已。您已成功将 unicode 值转换为字符串。

因为它是一个非 ASCII 字符,所以value[b]' 的值是'\xc3\xb3'ó 的 utf-8 文字。

如果您使用打印,

>>> print value[b]
>>> ó

这是因为print试图通过对 Unicode 字符串进行编码来显示非 ASCII 字符。

考虑一下:

>>> abc = 'ó'
>>> abc
'\xc3\xb3'
>>> print abc
ó
于 2013-07-12T06:42:30.803 回答