我有一本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编码。如何摆脱那个“u”?
你也可以使用这个:
标准网站的典型json响应有这两种编码表示-u'和u“ 这一小段把它们都去掉了。这可能不是必需的,因为这种编码不会妨碍任何逻辑处理,如前一个注释者所述
你为什么关心“u”字?它们只是一个视觉指示器;除非您在代码中实际使用
str(temp)
的结果,否则它们对代码没有影响。例如:如果它们确实出于某种原因而起作用,并且您不关心不能在国际设置中使用此代码等后果,那么您可以传入自定义的
object_hook
(请参见此处的json文档)来生成包含字符串内容而不是unicode的词典。没有“unicode”编码,因为unicode是一种不同的数据类型,而且我不认为unicode有任何问题,因为您可能总是将它转换为字符串,例如
foo.encode('utf-8')
。但是,如果您真的希望在前面有字符串对象,那么您可能应该创建自己的decoder class并在解码JSON时使用它。
相关问题 更多 >
编程相关推荐