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

关于pandas.read_csv()中doublequote=False解析引号字段的疑问

pandas中to_csv与read_csv的doublequote参数解析问题

问题场景

在使用pandas.DataFrame.to_csv()和pandas.read_csv()处理含引号的文本时,对doublequote参数的解析逻辑存在困惑。根据文档,该参数用于控制是否将字段内连续的两个quotechar解析为单个quotechar。

测试示例如下:

初始数据

text = 'simple,"simple"'
df = pd.DataFrame([{'col': text}])

to_csv生成的CSV内容

使用默认doublequote=True配置生成的文件内容:

col
"simple,""simple"""

读取结果差异

  • 用默认doublequote=True读取可还原原数据;
  • 用pd.read_csv('test.csv', doublequote=False, quotechar='"')读取时,得到:
col
0   simple,"simple"""

而预期结果是:

col
0   simple,""simple""

解析逻辑说明

to_csv的doublequote=True行为

当doublequote=True时,to_csv会将字段内的每个quotechar(此处为")转义为两个连续的",同时用"包裹整个字段。原文本simple,"simple"包含一个",转义后变为simple,""simple,再加上首尾的包裹",最终生成"simple,""simple"""(末尾的三个"是转义后的""加包裹的")。

read_csv的doublequote=False行为

当doublequote=False且未指定escapechar时,解析器不会将连续的""解析为单个",逻辑如下:

  1. 第一个"作为字段起始标记;
  2. 读取字段内容时,遇到的"若后面不是分隔符或行尾,会被当作普通字符保留;
  3. 遇到的"若后面紧跟分隔符或行尾,会被当作字段结束标记,不会被包含在字段内容中。

对应到生成的行"simple,""simple""":

  • 起始"开启字段;
  • 读取到simple,后的第一个",后面是另一个"(非分隔符/行尾),被保留;
  • 第二个"后面是s,被保留;
  • 读取到simple后的连续三个"中,最后一个"紧跟行尾,被当作字段结束标记,因此仅前面两个"被保留;
  • 最终字段内容为simple,"simple""",与预期不符。

结论

若要保留to_csv生成的连续",需在read_csv时同时设置doublequote=True(还原转义逻辑),或在to_csv时指定escapechar并在read_csv时对应设置,确保解析逻辑匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:22:56