python一行式解析json怎么避免中文转化为unicode编码?

查看:110
本文介绍了python一行式解析json怎么避免中文转化为unicode编码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

比如有一个json文件test.json,内容为:
{"one":{"two":"中文"}}
想要分层次的查看,于是:
cat test.json | python3 -m json.tool
然后输出为:

{
    "one": {
        "two": "\u4e2d\u6587"
    }
}

然而中文已经转换成了unicode编码,如何避免这种转换?

解决方案

必须转!
json是用于交换数据的,Unicode等 多字节字符 会在传输过程中出错。
"\u4e2d\u6587" ,严格的说,这不是utf格式编码,而是 unicode转义


更新

repr()保存json对象

>>> import json
>>> j = json.loads('{"one":{"two":"中文"}}')
>>> print(j)
{'one': {'two': '中文'}}
>>> j['one']['two']
'中文'
>>> d =json.dumps(j)
>>> print(d)
{"one": {"two": "\u4e2d\u6587"}}
>>> r = repr(j)
>>> print(r)
{'one': {'two': '中文'}}
>>> with open('test.json','w') as w:
    w.write(r)


不知道什么原因,我看不到评论。
你的意思是,只想在控制台显示一下json文件内容,是吧~
那你就把 json模块下的 tool.py 复制出来,改个名字,例如:my_json_tool.py
然后在 main() 里的 调用dump()方法处,给它添加个 参数 ensure_ascii=False
控制台命令也要作相应修改。

这篇关于python一行式解析json怎么避免中文转化为unicode编码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆