最近需要處理一大批的數(shù)據(jù)椎组,需要將字典格式的標(biāo)記文本寫入文件,轉(zhuǎn)換完成后發(fā)現(xiàn)历恐,字典中的中文全都變成了Unicode編碼顯示
顯示Unicode編碼的轉(zhuǎn)換方式
import json
data = {
"name": "張三",
"age": 20
}
fp = open('data.json', 'w', encoding='utf-8')
json_str = json.dumps(data)
fp.write(f'{json_str}')
fp.close()
# 結(jié)果如下
{"name": "\u5f20\u4e09", "age": 20}
- json.dumps 序列化時(shí)默認(rèn)使用的是ascii編碼寸癌,想輸出中文需要指定參數(shù)ensure_ascii=False
正確的轉(zhuǎn)換方式
import json
data = {
"name": "張三",
"age": 20
}
fp = open('data.json', 'w', encoding='utf-8')
json_str = json.dumps(data, ensure_ascii=False)
fp.write(f'{json_str}')
fp.close()
# 結(jié)果如下
{"name": "張三", "age": 20}
- 如果想格式化只需要增加一個(gè)參數(shù)indent=4
import json
data = {
"name": "張三",
"age": 20,
}
fp = open('data.json', 'w', encoding='utf-8')
json_str = json.dumps(data, ensure_ascii=False, indent=4)
fp.write(f'{json_str}')
fp.close()
# 結(jié)果如下
{
"name": "張三",
"age": 20
}
注:
- 如果覺得使用 fp = open('data.json', 'w', encoding='utf-8') 這種方式麻煩可以使用 with open('data.json', 'w', encoding='utf-8') as fp:
import json
data = {
"name": "張三",
"age": 20
}
with open('data.json', 'w', encoding='utf-8') as fp:
json.dump(res_str, fp, ensure_ascii=False, indent=4)