如何去除解码JSON对象中的"u"?

19 投票
3 回答
33113 浏览
提问于 2025-04-16 13:44

我在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”,这个“u”表示它是Unicode编码。请问怎么去掉这个“u”呢?

3 个回答

2

其实没有什么叫“unicode编码”,因为unicode是一种不同的数据类型。我觉得unicode不会有什么问题,因为你总是可以把它转换成字符串,比如用 foo.encode('utf-8') 这个方法。

不过,如果你真的想要一开始就得到字符串对象,那你可能需要自己创建一个 解码器类,然后在解码JSON的时候使用它。

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"。这个代码片段可以去掉这两种编码。虽然去掉它们可能不是必须的,因为这种编码不会影响逻辑处理,正如之前的评论者所提到的。

18

你为什么要在意那些'u'字符呢?它们只是个视觉提示;除非你真的在代码中用到了str(temp)的结果,否则它们对你的代码没有影响。举个例子:

>>> test = u"abcd"
>>> test == "abcd"
True

如果它们真的有某种原因很重要,而你又不在乎像不能在国际环境中使用这段代码这样的后果,那么你可以传入一个自定义的object_hook(可以参考json的文档)来生成内容为字符串的字典,而不是unicode。

撰写回答