我在Python中有一本词典词典:
d = {"a11y_firesafety.html":{"lang:hi": {"div1": "http://a11y.in/a11y/idea/a11y_firesafety.html:hi"}, "lang:kn": {"div1": "http://a11y.in/a11ypi/idea/a11y_firesafety.html:kn}}}
我在JSON文件中有这个,我使用json.dumps()
对其进行编码。现在,当我在Python中使用json.loads()
对其进行解码时,我得到如下结果:
temp = {u'a11y_firesafety.html': {u'lang:hi': {u'div1': u'http://a11y.in/a11ypi/idea/a11y_firesafety.html:hi'}, u'lang:kn': {u'div1': u'http://a11y.in/a11ypi/idea/a11y_firesafety.html:kn'}}}
我的问题是“u”表示我的temp(词典词典)中每个项目前面的Unicode编码。如何摆脱那个“你”?
答案 0 :(得分:19)
你为什么关心'你'字符?它们只是一个视觉指标;除非您在代码中实际使用str(temp)
的结果,否则它们对您的代码没有影响。例如:
>>> test = u"abcd"
>>> test == "abcd"
True
如果它们由于某种原因确实重要,并且您不关心在国际环境中无法使用此代码的后果,那么您可以传递自定义object_hook
(请参阅{{3这里的文档)用字符串内容而不是unicode生成字典。
答案 1 :(得分:3)
你也可以使用它:
import fileinput
fout = open("out.txt", 'a')
for i in fileinput.input("in.txt"):
str = i.replace("u\"","\"").replace("u\'","\'")
print >> fout,str
来自标准网站的典型json响应有这两种编码表示 - u'和u“ 这个片段摆脱了它们。它可能不是必需的,因为这种编码不会妨碍任何逻辑处理,如前一位评论者所述
答案 2 :(得分:2)
没有“unicode”编码,因为unicode是一种不同的数据类型,我真的没有看到unicode会出现问题的原因,因为你可能总是将它转换为字符串,例如foo.encode('utf-8')
。
但是,如果你真的想要预先拥有字符串对象,你应该创建自己的decoder class并在解码JSON时使用它。