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

2024-10-02 20:36:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 数据字符串代码textimportjsondata字典
3条回答

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

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

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

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

一切都会好起来的。Unicode是处理“人类可读”字符串的首选方法。JSON本身不支持二进制数据,因此将JSON字符串解析为Python unicode是有意义的。在

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

In Python source code, Unicode literals are written as strings prefixed with the ‘u’ or ‘U’ character: u'abcdefghijk'.

json.loads将字符串读取为unicode1。一般来说,这不会伤害任何东西。在

1只有unicode对象的表示形式tryprint(text['hablar'])u将不存在。

相关问题 更多 >