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

如何用Pandas read_csv读取含双引号值及带逗号字段的异常CSV文件

使用Pandas读取含未转义双引号的特殊CSV文件

你的问题核心是该CSV不符合标准格式——标准CSV要求值内的双引号必须用两个连续双引号转义(比如"fi""e,ld2"),但你的文件里值内是单个双引号,导致Pandas默认的解析逻辑失效。

直接用read_csv的参数无法解决这种非标准格式,必须先预处理文本,将未转义的双引号转为标准格式,再用Pandas读取。

解决方案代码

import pandas as pd
from io import StringIO

def fix_unescaped_quotes(line):
    in_quote = False
    new_chars = []
    for char in line:
        if char == '"':
            if in_quote:
                # 引号内的单个双引号替换为两个,符合CSV转义规则
                new_chars.append('""')
            else:
                new_chars.append(char)
                in_quote = True
        else:
            new_chars.append(char)
            # 遇到分隔符且不在引号内时,标记为字段结束
            if char == ',' and not in_quote:
                in_quote = False
    return ''.join(new_chars).rstrip('\n')

# 读取原始文件并预处理
with open('your_file.csv', 'r', encoding='utf-8') as f:
    processed_lines = [fix_unescaped_quotes(line) for line in f]

# 用StringIO将处理后的文本传入read_csv
df = pd.read_csv(
    StringIO('\n'.join(processed_lines)),
    quotechar='"',
    escapechar='"'
)

# 输出验证
print(df.to_string(index=False, col_space=10))

效果说明

对示例文件第一行"fie,ld1","fi"e,ld2","field3",预处理后会转为标准格式:
"fie,ld1","fi""e,ld2","field3"
此时Pandas就能正确识别3个字段,结果完全符合你的期望:

fie,ld1      fi"e,ld2      field3
       test        testing        meow

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:15:05