我正在尝试将西班牙语单词的翻译存储为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”?
答案 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