处理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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要批量处理json文件,你可以使用labelme_json_to_dataset.exe这个工具。这个工具的路径是C:\ProgramData\anaconda3\envs\labelme\Scripts\labelme_json_to_dataset.exe。你可以将要处理json文件放在一个文件夹中,然后使用该工具将这些json文件转化为txt文件。具体的操作步骤如下: 1. 将要处理json文件放在一个文件夹中。 2. 打开命令提示符或终端窗口。 3. 使用cd命令切换到labelme_json_to_dataset.exe所在的路径,即C:\ProgramData\anaconda3\envs\labelme\Scripts\。 4. 运行以下命令来批量处理json文件: labelme_json_to_dataset.exe <json文件所在文件夹路径> <输出txt文件夹路径> 例如,如果你的json文件放在F:\DATA\json文件夹中,想要将转化后的txt文件保存在F:\DATA\txt文件夹中,那么命令应该是: labelme_json_to_dataset.exe F:\DATA\json F:\DATA\txt 5. 程序会自动将json文件转化为txt文件,并保存在指定的输出txt文件夹中。 这样就可以批量处理json文件了。请注意,你需要根据实际情况修改命令中的文件夹路径。 #### 引用[.reference_title] - *1* [批量处理:读取文件夹,将json文件转化为txt文件](https://blog.csdn.net/dally2/article/details/117904166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [labelme标记数据后,批量处理json文件,生成标签](https://blog.csdn.net/hejunran/article/details/118228300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值