繁体   English   中英

当python加载json时,如何将str转换为unicode,以便打印汉字?

[英]when python loads json,how to convert str to unicode ,so I can print Chinese characters?

我有一个这样的json文件:

{
    'errNum': 0,    
    'retData': {
    'city': "武汉"
    }
}

import json 
content = json.loads(result) # supposing json file named result
cityname = content['retData']['city'] 
print cityname

之后,我得到一个输出: \武\汉我知道它是武汉汉字的unicode,但它的类型是str isinstance(cityname,str) is True。 那么如何将此 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的东西,编码和解码,但也看不懂,太疯狂了! 我需要一些帮助,谢谢!

也许这个答案来得太晚了五年,但由于我在构建日语预处理器时遇到了类似的问题,因此我找到了答案。

当您loads result loadscontent添加以下标志:

content = json.loads(result, ensure_ascii=False)

这解决了我的问题。

您的 json 包含转义的 unicode 字符。 您可以使用unicode_escape编解码器将它们解码为实际的 unicode 字符:

print cityname.decode('unicode_escape')

请注意,虽然这通常会起作用,但根据 unicode 转义的来源,您可能会遇到基本多语言平面(U+0 到 U+FFFF)之外的字符问题。 我从用户@bobince 的评论中引用了一段方便的话:

请注意……有许多不同的格式使用 \\u 转义 - Python unicode 文字(unicode-escape 处理的)、Java 属性、JavaScript 字符串文字、JSON 等等。 重要的是要知道您正在处理哪个转义,因为它们对于其他哪些转义是有效的都有略微不同的规则。 unicode-escape 可能是也可能不是解析该数据的有效方式,具体取决于它的来源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM