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

如何用Pandas正确读取含引号内逗号的大型CSV文件?

解决带引号内逗号的大型CSV读取与分割问题

一、最优CSV读取方案(直接用pandas正确解析)

你之前的错误在于设置了quoting=csv.QUOTE_NONE,这会让pandas忽略引号的存在,直接把所有逗号当成分隔符,导致解析出错。实际上pandas的read_csv默认就支持解析带引号的字段,只需去掉错误参数设置即可:

import pandas as pd

# 直接读取,pandas会自动识别引号内的字段,忽略其中的逗号
df = pd.read_csv(r'C:\example_file.csv', encoding='utf-8')

如果CSV有特殊引号规则,可显式指定参数适配:

import pandas as pd
import csv

df = pd.read_csv(
    r'C:\example_file.csv',
    delimiter=",",
    quotechar='"',
    quoting=csv.QUOTE_MINIMAL,  # 适配仅特殊字段加引号的场景,匹配你的示例
    encoding='utf-8'
)

针对200万行的大型文件,为避免内存溢出,可分块读取:

chunk_size = 100000  # 每次读取10万行
chunks = []
for chunk in pd.read_csv(r'C:\example_file.csv', encoding='utf-8', chunksize=chunk_size):
    chunks.append(chunk)
df = pd.concat(chunks, ignore_index=True)

二、排除引号内逗号的字符串分割方法

如果需要手动处理字符串分割,Python标准库的csv模块原生支持正确解析带引号的字段,无需自行编写易出错的正则:

import csv
import pandas as pd

rows = []
with open(r'C:\example_file.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f, delimiter=',', quotechar='"')
    headers = next(reader)  # 读取列名
    for row in reader:
        rows.append(row)

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

这种方式和pandas底层解析逻辑一致,能准确跳过引号内的逗号,逐行读取的模式也能降低大型文件的内存压力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:30:19