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

Pandas读取含坏行CSV时提取错误行号与日志记录方案问询

Pandas读取CSV坏行警告处理方案

干净警告列表提取

你拿到的输出是bytes对象的序列化字符串,直接做字符串替换容易误处理内容中的特殊字符,更稳妥的处理方式如下:

import ast
from contextlib import redirect_stderr
import io
import pandas as pd

f = io.StringIO()
with redirect_stderr(f):
    df = pd.read_csv(fname, sep=',', error_bad_lines=False, warn_bad_lines=True)

msg_list = []
if f.getvalue():
    msg = f.getvalue()
    # 解析序列化的bytes字符串,转成正常文本
    raw_bytes = ast.literal_eval(msg.strip().strip('"'))
    warn_content = raw_bytes.decode('utf-8')
    # 拆分+过滤空行直接得到目标列表
    msg_list = [line for line in warn_content.splitlines() if line.strip()]

处理后得到的msg_list就是你需要的格式,直接遍历列表调用write_log方法即可逐行写入日志。


坏行行号提取

基于上面得到的msg_list,可以快速提取所有坏数据行号:

import re

bad_line_nums = []
for line in msg_list:
    match_obj = re.search(r'Skipping line (\d+):', line)
    if match_obj:
        bad_line_nums.append(int(match_obj.group(1)))

最终bad_line_nums就是存储所有坏行号的列表,比如示例中的[4,6]。


版本兼容说明

你当前使用的pandas 1.1.5版本支持error_bad_lines、warn_bad_lines参数,无需调整;如果后续升级pandas到更高版本,可替换为on_bad_lines='warn'参数实现相同效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:27:03