Python:将字典转换为JSON,然后将“u”附加到每个条目

时间:2014-02-13 15:59:39

标签: python json dictionary

我正在尝试将西班牙语单词的翻译存储为json。但是在python词典和json字符串之间来回转换的过程搞乱了我的数据。

以下是代码:

import json 

text={"hablar":"reden"}
print(text)        # {'hablar': 'reden'}

data=json.dumps(text)
text=json.loads(data)

print(text)        # {u'hablar': u'reden}

为什么添加了字母“u”?

3 个答案:

答案 0 :(得分:1)

json.loads以unicode 1 读取字符串。一般来说,这不应该伤害任何事情。

1 u仅出现在unicode对象的表示中 - 尝试print(text['hablar'])而不是{ {1}}将出现。

答案 1 :(得分:1)

JSON中的字符串被加载到Python中的unicode字符串中。

如果您打印字典,则表示正在打印repr()形式的键和值。但字符串本身仍然只包含reden

>>> print(repr(text["hablar"]))
u'reden'
>>> print(text["hablar"])
reden

一切都应该没问题。 Unicode是如何使用“人类可读”字符串的首选方式。 JSON本身不支持二进制数据,因此将JSON字符串解析为Python unicode是有意义的。

您可以在此处阅读有关Python的更多信息:http://docs.python.org/2/howto/unicode.html

  

在Python源代码中,Unicode文字被编写为前缀为“u”或“U”字符的字符串:u'abcdefghijk'

答案 2 :(得分:0)

u字符含义是这个字符串是unicode所以你可以使用yaml而不是json 所以代码将是:

import yaml 

text={"hablar":"reden"}
print(text)        # {'hablar': 'reden'}

data=yaml.dump(text)
text=yaml.load(data)

print(text)        # {'hablar': 'reden}

这个问题有关于yaml的更多细节: What is the difference between YAML and JSON? When to prefer one over the other