python3处理json文件中含有中文dumps的应用

Posted 永远的麦田

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3处理json文件中含有中文dumps的应用相关的知识,希望对你有一定的参考价值。

python3的编码问题一直比较简单

内存中字符串采用unicode

存储到文件中采用utf-8

以下为str,byte互相转换的过程:

str = "abc学习"
str
Out[6]: ‘abc学习‘
mybyte = str.encode("utf-8")
mybyte
Out[8]: b‘abc\xe5\xad\xa6\xe4\xb9\xa0‘
str2 = mybyte.decode("utf-8")
str2
Out[10]: ‘abc学习‘

 

最近在写json相关的文件存取,遇到这样的问题:

import json
json_str = """{"a": " 1", "f": "100\n", "b": "好好学习"}"""
json_str
Out[20]: ‘{"a": " 1", "f": "100\n", "b": "好好学习"}‘
json_str = json_str.encode(‘unicode_escape‘).decode(‘utf-8‘)
json_str
Out[22]: ‘{"a": " 1", "f": "100\\n", "b": "\\u597d\\u597d\\u5b66\\u4e60"}‘
json_data = json.loads(json_str, encoding="utf-8")
json_data
Out[24]: {‘a‘: ‘ 1‘, ‘b‘: ‘好好学习‘, ‘f‘: ‘100\n‘}
dumps_str = json.dumps(json_data, indent=4)
dumps_str
Out[26]: ‘{\n    "f": "100\\n",\n    "a": " 1",\n    "b": "\\u597d\\u597d\\u5b66\\u4e60"\n}‘
json_data = json.loads(dumps_str)
json_data
Out[28]: {‘a‘: ‘ 1‘, ‘b‘: ‘好好学习‘, ‘f‘: ‘100\n‘}

从上面的事例看出,通过string转成json后,再通过json.dumps转成字符串后,原先的好好学习变成了中文编码,存储到文件中也是中文编码,很不直观。

经过摸索,采用如下方法即可使得dumps转成中文(ensure_ascii=False)

dumps_str = json.dumps(json_data, ensure_ascii=False, indent=4)
dumps_str
Out[30]: ‘{\n    "f": "100\\n",\n    "a": " 1",\n    "b": "好好学习"\n}‘

以上是关于python3处理json文件中含有中文dumps的应用的主要内容,如果未能解决你的问题,请参考以下文章

python3.x 基础四:json与pickple

python中json处理

将可读格式的json.dumps写入Python3中的文件[重复]

python3 json序列化问题

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分

Python3之json文件操作