You need to enable JavaScript to run this app. 如何解决pandas导入行分隔JSON格式TXT文件的报错问题
优惠活动
大模型
产品
解决方案
定价
更多

如何解决pandas导入行分隔JSON格式TXT文件的报错问题

行分隔JSON格式TXT的pandas导入解决方案

报错根因

你遇到的三类报错,本质是常规读取函数和行分隔JSON(NDJSON/JSON Lines)的格式不匹配:

  • pd.read_csv报ParserError:该方法默认将逗号作为字段分隔符,会把JSON对象内部的逗号误判为表格字段分隔标记,遇到嵌套结构更复杂、逗号数和前置行不一致的行,就会抛出“字段数不匹配”的C解析错误。
  • pd.read_json报Trailing data:该方法默认按标准JSON结构(整文件为大JSON数组)解析,逐行独立存储JSON对象的文件不符合这个默认结构,就会被判定为存在尾部多余数据触发报错。
  • pd.read_fwf读出来列错位:该方法是按固定文本宽度切分列,完全没有JSON键值解析能力,自然会出现列名嵌在数据块、排布和预期不符的问题。

正确导入方法

方法1:用pandas原生参数直接读取(优先推荐)

read_json本身支持行分隔JSON格式,只是需要手动开启对应模式,核心是添加lines=True参数,告诉pandas逐行解析独立JSON对象:

df = pd.read_json(
    "df.txt",
    lines=True,
    orient="records"
)

如果还是存在少量解析报错,大概率是文件存在空行、个别行JSON格式损坏,可以加上异常行跳过参数提升兼容性:

# 分块读取,自动跳过解析失败的异常行
chunk_reader = pd.read_json(
    "df.txt",
    lines=True,
    chunksize=1000,
    on_bad_lines="skip"
)
# 合并分块读取的结果为完整DataFrame
df = pd.concat(chunk_reader)

方法2:逐行手动解析兜底(适合文件损坏较严重的场景)

如果内置参数读取还是频繁报错,可以逐行读取文件、手动解析JSON后再生成DataFrame,适配性最强:

import json
import pandas as pd

records = []
# 按编码打开文件逐行读取
with open("df.txt", "r", encoding="utf-8") as f:
    for line in f:
        clean_line = line.strip()
        # 跳过空行避免解析报错
        if not clean_line:
            continue
        try:
            # 逐行解析JSON为字典
            records.append(json.loads(clean_line))
        except json.JSONDecodeError:
            # 遇到格式错误的行直接跳过,也可自定义记录异常行位置
            continue

# 把所有解析后的记录转成DataFrame
df = pd.DataFrame(records)

常见注意事项

  • 不要用read_csv、read_fwf硬读JSON类文本,两类方法是为纯分隔/固定宽度的结构化表格设计的,不具备JSON解析能力,长期使用一定会出现字段错位、解析报错的问题。
  • 如果文件存在中文,需要根据实际编码(如gbk、gb18030)手动指定读取的encoding参数,避免出现乱码。
  • 如果单行JSON存在嵌套结构,读取后对应列会存储字典/列表类型,可根据后续分析需求单独展开,不需要在读取阶段做特殊处理。

内容的提问来源于stack exchange,提问作者codelearner0504

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 02:15:04