Python JSON转CSV报JSONDecodeError如何跳过错误行继续处理
大体积JSON转CSV跳过异常行修复方案
报错说明
运行JSON转CSV代码时触发json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 67 (char 66),该报错由两类问题共同导致:
- JSON文件存在编码无法识别的特殊字符,更换编码仍无法解决
- 单行JSON格式不完整,解析失败直接中断整个转换流程
代码修改点
- 打开JSON文件时新增
errors='ignore'参数,自动跳过无法识别的编码字符 - 对
json.loads逻辑新增异常捕获,遇到解析失败的行直接跳过,不中断大文件的整体转换
修改后完整代码
# -*-coding:utf-8 -*- import csv import json import sys import codecs from json import JSONDecodeError def trans(path): # 新增errors='ignore'参数,跳过无法识别的编码字符 jsonData = codecs.open('C:/Users/jeri/Desktop/1.json', 'r', encoding='utf-8', errors='ignore') csvfile = open('C:/Users/jeri/Desktop/1.csv', 'w', encoding='utf-8', newline='') writer = csv.writer(csvfile, delimiter=',') flag = True for line in jsonData: try: dic = json.loads(line) except JSONDecodeError: # 解析失败直接跳过当前行 continue if flag: keys = list(dic.keys()) print(keys) writer.writerow(keys) flag = False writer.writerow(list(dic.values())) jsonData.close() csvfile.close() if __name__ == '__main__': path = str(sys.argv[0]) print(path) trans(path)
内容的提问来源于stack exchange,提问作者jeri teri
相关产品推荐
相关产品推荐

