我有一个像这样的json文件:
{
'errNum': 0,
'retData': {
'city': "武汉"
}
}
import json
content = json.loads(result) # supposing json file named result
cityname = content['retData']['city']
print cityname
之后,我得到了一个输出:\u6b66\u6c49
我知道它是武汉
的汉字的unicode,但它的类型是str
isinstance(cityname,str)
是真的。
那么如何将此str转换为unicode并输出为武汉
我也试过这些解决方案:
>>> u'\u6b66\u6c49'
u'\u6b66\u6c49'
>>> print u'\u6b66\u6c49'
武汉
>>> print '\u6b66\u6c49'.decode()
\u6b66\u6c49
>>> print '\u6b66\u6c49'
\u6b66\u6c49
搜索了一些关于ascii,unicode和utf-8的内容,编码和解码,但也无法理解,这很疯狂! 我需要一些帮助,谢谢!
答案 0 :(得分:1)
也许这个答案已经晚了五年,但由于我在构建日语预处理器时遇到了类似的问题,因此我找到了答案。
当您 loads
到 result
的 content
添加以下标志:
content = json.loads(result, ensure_ascii=False)
这解决了我的问题。
答案 1 :(得分:-2)
您的json包含转义的unicode字符。您可以使用unicode_escape
编解码器将它们解码为实际的unicode字符:
print cityname.decode('unicode_escape')
请注意,虽然这通常有效,但根据unicode转义的来源,您可能会遇到基本多语言平面之外的字符(U + 0到U + FFFF)的问题。用户@bobince的一个方便的引用,我从评论中获取:
请注意......有许多不同的格式使用\ u escapes - Python unicode文字(unicode-escape句柄),Java 属性,JavaScript字符串文字,JSON等。它是 重要的是知道你正在处理哪一个,因为他们都有 关于其他逃逸有效的规则略有不同。 unicode-escape可能是也可能不是解析该数据的有效方法 取决于它来自何处。