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

使用pandas read_csv解析带BOM文件时遇EOF错误的解决方法

解决带BOM的CSV文件pandas解析报错问题

错误根源

  1. 核心问题:你提供的CSV文件最后一行(行7)的最后一个字段缺少闭合的双引号,解析器读到文件末尾时发现字符串未结束,直接触发EOF相关错误。
  2. BOM问题:文件带UTF-8 BOM,但你用utf-8-sig解码的操作已经处理了BOM,这不是报错的关键。

解决方法

方法1:修复原始文件(推荐)

直接补全最后一行末尾的双引号,把最后一行结尾从hepatitis改成hepatitis."。修复后用常规代码即可正常解析:

import pandas as pd
from io import BytesIO

df = pd.read_csv(BytesIO(file_data), encoding='utf-8-sig')

注:encoding='utf-8-sig'能让pandas自动识别并移除UTF-8 BOM,无需手动转码。

方法2:解析时自动修复(适合无法修改源文件的场景)

如果没法修改原始文件,可以先处理数据补全引号,再解析:

import pandas as pd
from io import BytesIO

# 解码带BOM的字节数据为字符串
file_content = file_data.decode('utf-8-sig')
lines = file_content.splitlines()

# 检查每一行的引号是否成对,补全未闭合的
fixed_lines = []
for line in lines:
    if line.count('"') % 2 != 0:
        fixed_lines.append(line + '"')
    else:
        fixed_lines.append(line)

# 重新编码后解析
fixed_data = '\n'.join(fixed_lines).encode('utf-8')
df = pd.read_csv(BytesIO(fixed_data), encoding='utf-8')

或者直接跳过有问题的行(不推荐,会丢失数据):

df = pd.read_csv(BytesIO(file_data), encoding='utf-8-sig', engine='python', on_bad_lines='skip')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:45:34