处理json文件时遇到的坑

运行json.loads()的时候会出现下面几个错误

错误1:JSONDecodeError: Expecting ',' delimiter: line 1 column 658 (char 657)

这个错误的意思是你的数据格式并不符合json的格式要求

可以使用json格式化工具进行格式化检验,格式化工具有https://www.json.cn/https://www.bejson.com/

因此需要检查数据中是否存在"'"这样的情况,

比如:"an utterance of ‘boo’ to show disapproval or contempt or speaker or performer"

这个句子中出现单引号,因此识别失败,所以要注意去掉句子中的所有的单引号。

备注:json中都是双引号,单引号是不被识别的。还有True、False、None也是不能被识别的!!!!

错误2:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 

需要将字符串中的单引号改成双引号即可:

str_json = f.read()
temp = str_json.replace("'", '"') # 将单引号,替换成双引号
json_obj = json.loads(temp) # Done!

错误 3:IndentationError: expected an indented block

说明是缩进错误,希望缩进一个块

由于json不能识别一些符号,因此是和python存在差异的。如果不转换数据类型,直接把python里面的字典当成json使用,或者直接拿获取到的json数据当成字典用,都会报错。

python与json数据类型对应表:

Python和json的数据类型转换需要用到python的内置模块json,直接在代码中import json即可。

json模块中主要用到4个函数

  json.dumps(): 将Python数据编码(转换)为JSON数据;
  json.loads(): 将JSON数据转换(解码)为Python数据;
  json.dump(): 将Python数据编码并写入JSON文件;
  json.load(): 从JSON文件中读取数据并解码。

参考博客

https://www.jianshu.com/p/ee25e2b94eb8

https://www.jianshu.com/p/becada48f8cf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值