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

Pandas默认读取含特殊字符CSV的字段拆分逻辑疑问

为什么Pandas默认读取CSV会出现字段拆分异常?

问题场景

有一个仅一行两列、无表头的CSV文件,实际存储内容为:

"1,6 Engine DCT 18\"","1,6 Engine Luxury DCT"

期望读取后得到一行两列的表格,其中第一列是1,6 Engine DCT 18",第二列是1,6 Engine Luxury DCT。但执行默认读取代码:

pandas.read_csv("mycsv.csv", header=None, sep=",")

得到的拆分结果不符合预期:

01
1,6 Engine DCT 18",16 Engine Luxury DCT"

核心原因分析

Pandas 2.0.1的read_csv默认参数组合,导致了这种异常拆分:

  • 默认不将反斜杠视为转义字符:
    默认escapechar=None,CSV中的\只是普通文本字符,不会被用来转义后续的"。因此文件里的\"会被解析成两个独立字符:\和"。

  • 双引号转义遵循CSV标准规则:
    默认doublequote=True,这是CSV的标准转义逻辑——如果字段内需要包含双引号,必须用两个连续的双引号(例如"1,6 Engine DCT 18""","..."),而非反斜杠加双引号。该CSV使用的\"不符合默认转义规则,解析器无法识别这是字段内的引号。

  • QUOTE_MINIMAL模式的结束判断逻辑:
    默认quoting=csv.QUOTE_MINIMAL,解析器仅在引号紧跟分隔符或行尾时,才判定该引号为字段结束标志。
    回到目标CSV行:第一个字段的"后紧跟的是","(逗号+双引号),不是单纯的分隔符逗号,因此解析器不认为这是第一个字段的结束,会持续读取后续字符,直到遇到第二个字段中1,6的逗号,才将这个逗号当作分隔符拆分字段。
    最终导致第一个字段包含了1,6 Engine DCT 18\"和后续的,1,第二个字段从6开始直到行尾的"。

正确读取方式

指定quotechar='"'和escapechar="\\",让解析器识别反斜杠为转义字符,正确处理字段内的\":

pandas.read_csv("mycsv.csv", header=None, sep=",", quotechar='"', escapechar="\\")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:04:50