找回密码
 会员注册
查看: 33|回复: 0

Python保存为json中文Unicode乱码解决json.dump()

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71754
发表于 2024-9-6 18:43:48 | 显示全部楼层 |阅读模式
保存为json中文Unicode乱码:可以看到,中文字符没有乱码,只是出现了反斜杠,此时解决方法应考虑是否进行了二次序列化。一、原因1在dump时加入ensure_ascii=False即可解决,即json.dump(json_data,f,indent=4,ensure_ascii=False)二、原因2json.dumps(data_dict,ensure_ascii=False)已经进行了序列化,在写入文件时,又采用json.dump(json_data,f,indent=4,ensure_ascii=False)方法导致二次序列化,改为f.write(json_data)即可。importosimportjsonimportnumpyasnpnp.set_printoptions(linewidth=400)data_list=[]result_list=[]is_duplicate=[]forfilenameinos.listdir("./log_data"):print(filename)withopen("./log_data/"+filename,'r',encoding="utf-8")asf:line=f.readline()whileline:data=line[line.find("【param】")+len("【param】")+1:line.find("【result】")-2]result=line[line.find("【result】")+len("【result】")+1:line.find(",【headers】")]data_list.append(data)result_list.append(result)line=f.readline()effective_set=set()print(len(data_list))fordataindata_list:try:data_dict=json.loads(data)trace_id=data_dict.pop("trace_id")print(data_dict["match_start_date"])effective_set.add(json.dumps(data_dict,ensure_ascii=False))except:passcontinueprint(len(effective_set))n=1forjson_dataineffective_set:ifn
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 13:25 , Processed in 1.382873 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表