坚持写博客💪,分享自己的在学习、工作中的所得
- 给自己做备忘
- 对知识点记录、总结,加深理解
- 给有需要的人一些帮助,少踩一个坑,多走几步路
尽量以合适的方式排版,图文兼有
如果写的有误,或者有不理解的,均可在评论区留言
如果内容对你有帮助,欢迎点赞 👍 收藏 ⭐留言 📝。
虽然平台并不会有任何奖励,但是我会很开心,可以让我保持写博客的热情🙏🙏🙏
Python字典中包含中文字符,保存为json时,会对中文字符进行
Uncode
编码,导致文件可读性下降。
import json
obj_dict = {
'中文': '字符串',
'en': 'string'
}
print(obj_dict)
🧁保存中文字符
fname = 'test.json'
🧁json.dump
with open(fname, 'w', encoding='utf-8') as f:
json.dump(obj_dict, fp=f)
🧁json.dumps
with open(fname, 'w', encoding='utf-8') as f:
f.write(json.dumps(obj_dict))
两种方式得到的结果都是:
{"\u4e2d\u6587": "\u5b57\u7b26\u4e32", "en": "string"}
中文字符会被转为Unicode
编码。
🧁ensure_ascii
fname = 'test2.json'
🧁json.dump
with open(fname, 'w', encoding='utf-8') as f:
json.dump(obj_dict, fp=f, ensure_ascii=False)
🧁json.dumps
with open(fname, 'w', encoding='utf-8') as f:
f.write(json.dumps(obj_dict, ensure_ascii=False))
添加ensure_ascii=False
之后,两种方式得到的结果都是:
{"中文": "字符串", "en": "string"}
可以以原始字符保存中文。
🧁json.loads
# fname = 'test.json'
fname = 'test2.json'
with open(fname, 'r', encoding='utf-8') as f:
print(json.loads(f.read()))
读取前面保存的两个JSON,均可以得到期望的结果:
{'中文': '字符串', 'en': 'string'}
json文件中,不管是中文字符还是Unicode编码过的中文字符,都可以正确显示为中文字符。
🧁格式化JSON文件
使用indent=4
格式化JSON文件
print(json.dumps(obj_dict, indent=4, ensure_ascii=False))
如果内容对你有帮助,或者觉得写的不错
🏳️🌈欢迎点赞 👍 收藏 ⭐留言 📝
有问题,请在评论区留言