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

如何用Pandas读取行分隔符数量多于表头的CSV文件?

这个问题我之前也踩过坑!当CSV里的字段本身包含分隔符(逗号)却没按规范用引号包裹时,Pandas的默认解析逻辑很容易把列拆错,但Excel自带的启发式算法却能聪明地识别这种情况并正确合并字段。下面给你几个可行的解决方案,按实用性排序:

解决方案

1. 借助Excel的解析能力(最推荐,适配所有未知列的情况)

既然Excel能正确读取,我们可以先把CSV转成Excel格式,再用Pandas读取。这个方法完全复刻Excel的处理逻辑,不管哪列包含分隔符都能搞定。不过需要你有Excel安装(Windows系统),或者用LibreOffice替代(跨平台)。

Windows下用pywin32实现:

首先安装依赖:

pip install pywin32 pandas

然后运行代码:

import pandas as pd
import win32com.client as win32
import os

csv_path = os.path.abspath("test.csv")
xlsx_path = os.path.abspath("test_converted.xlsx")

# 调用Excel后台转换CSV到XLSX
excel = win32.gencache.EnsureDispatch("Excel.Application")
excel.Visible = False  # 不显示Excel窗口,后台运行
try:
    wb = excel.Workbooks.Open(csv_path)
    # 51对应XLSX格式,56对应旧版XLS格式
    wb.SaveAs(xlsx_path, FileFormat=51)
finally:
    wb.Close()
    excel.Quit()

# 读取转换后的XLSX文件
df = pd.read_excel(xlsx_path)
print(df)

跨平台用LibreOffice实现:

如果你用Linux或macOS,可以安装LibreOffice,然后用命令行转换:

libreoffice --headless --convert-to xlsx test.csv

转换完成后,用Pandas读取生成的XLSX文件即可,代码和上面最后部分一致。


2. 手动处理CSV行(适合已知哪些列包含分隔符的情况)

如果明确知道哪些列是可能包含逗号的(比如NAME、PLACE),可以用Python的csv模块逐行读取,手动合并对应的字段,再转成DataFrame。

比如针对你的示例2,已知NAME和PLACE列可能包含逗号:

import pandas as pd
import csv

rows = []
with open("test.csv", "r") as f:
    reader = csv.reader(f)
    headers = next(reader)  # 获取表头
    for row in reader:
        # 针对表头A,NAME,B,PLACE的合并逻辑
        new_row = [
            row[0],  # 提取A列
            ", ".join(row[1:3]),  # 合并第2-3个元素作为NAME列
            row[3],  # 提取B列
            ", ".join(row[4:])  # 合并剩余元素作为PLACE列
        ]
        rows.append(new_row)

df = pd.DataFrame(rows, columns=headers)
print(df)

这个方法需要你明确知道哪些列需要合并,但灵活性很高,可以根据实际文件的格式调整合并逻辑。


3. 正则表达式分隔符(适合字段有明显格式特征的情况)

如果包含逗号的字段有明显的格式特征(比如字段内的逗号后面没有空格,而列分隔符是逗号加空格),可以用正则表达式作为分隔符,精准匹配列之间的分隔符。

比如,如果你的文件中列分隔符是, (逗号加空格),而字段内的逗号是无空格的,, 可以用:

df = pd.read_csv("test.csv", sep=r',\s', engine='python')

但这个方法依赖文件的格式特征,通用性不如前两种,仅适合有明确格式规律的CSV。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:57:48