翼度科技»论坛 编程开发 python 查看内容

python字典保存为json后读取出错问题及解决

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
python字典保存为json后读取出错

json.load()读取json文件数据时,报错:XXXXXXXXX。
是因为在json文件中的引号为单引号,json.load()只能识别双引号。

避免报错的方式有三种

1、从保存文件时入手,刚开始就避免json文件中写入单引号。
json文件之所以写入单引号,大概率是在写入数据时,直接str(dict_data)字典转字符串,这种遗留问题就是不能用json.load()读取,写的时候应该用:json.dump(dict_data,file),一次写入到json文件中的字典是双引号的。
2、如果不想更换写入方式,或者数据是别人的,难么可以换读取方式。使用内置模块ast的literal_eval方法:
  1. import ast
  2. ast.literal_eval(string)
复制代码
3、直接使用python内置函数eval(string)
2和3的方法可以直接把字符串形式的json数据转为字典。

json文件转为str出现中文乱码问题

原来的代码是这样的
  1. with open(fileName,'w',encoding='utf-8') as f:
  2.     json.dump(AllResume,f)
复制代码
当然用
  1. temp = json.dumps(AllResume)
  2. with open(fileName,'w',encoding='utf-8') as f:
  3.     f.write(temp)
  4.     f.close()
复制代码
得到的也是一样的结果。
出现的结果如下:

这是因为json.dumps或者json.dump 序列化时对中文默认使用的ascii编码,想输出真正的中文需要指定ensure_ascii=False:
  1. with open(fileName,'w',encoding='utf-8') as f:
  2.     json.dump(AllResume,f,ensure_ascii=False)
复制代码
此时得到的结果才是:


总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/python/316267uk5.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具