You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python JSON转CSV报JSONDecodeError如何跳过错误行继续处理

大体积JSON转CSV跳过异常行修复方案

报错说明

运行JSON转CSV代码时触发json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 67 (char 66),该报错由两类问题共同导致:

  • JSON文件存在编码无法识别的特殊字符,更换编码仍无法解决
  • 单行JSON格式不完整,解析失败直接中断整个转换流程

代码修改点

  1. 打开JSON文件时新增errors='ignore'参数,自动跳过无法识别的编码字符
  2. 对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:30:03