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

如何使用pandas读取字段含多引号和逗号的不规范CSV文件

不规范CSV文件读取解决方案

针对字段内部存在未转义双引号、分隔符逗号,且无法提前预知异常列的不规范CSV场景,可通过正则匹配字段的方案完成读取,具体实现如下:

实现思路

观察提供的CSV结构,所有字段均以双引号包裹,字段之间以逗号分隔,因此可以通过正则匹配所有符合"内容"格式且后接逗号/行尾的单元,直接提取每一行的字段,避开内置CSV解析器对内部双引号的默认转义判断。

代码实现

import re
import pandas as pd

# 匹配双引号包裹的字段,非贪婪匹配避免跨字段
field_pattern = re.compile(r'"(.*?)"(?=,|$)')

# 读取文件全量内容
with open("你的文件路径.csv", "r", encoding="utf-8") as f:
    all_lines = f.readlines()

# 解析表头,确认总字段数
header = field_pattern.findall(all_lines[0])
total_cols = len(header)

parsed_rows = []
for line in all_lines[1:]:
    # 提取当前行所有匹配的字段
    fields = field_pattern.findall(line)
    # 异常兼容:如果匹配到的字段数超过总字段数,将多余内容合并到最后一个字段
    if len(fields) > total_cols:
        fields = fields[:total_cols - 1] + [','.join(fields[total_cols - 1:])]
    parsed_rows.append(fields)

# 转换为DataFrame
df = pd.DataFrame(parsed_rows, columns=header)

注意事项

  • 如果CSV存在未用双引号包裹的普通字段,可以调整正则规则匹配非逗号开头的普通内容即可
  • 如果出现极端异常行,可提前统计所有行的字段数,取出现频率最高的数值作为total_cols基准值,提升解析兼容性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:27:01