Python导出CSV在Notepad++显示三重引号,如何仅保留ASCII双引号
问题原因与解决方法
问题原因
pandas的to_csv()方法默认开启了自动转义与包裹引号的逻辑:当检测到字段内容中包含双引号时,会自动用双引号对内容中的双引号做转义(单个双引号会变成两个连续双引号),同时在外层再包裹一对双引号。你提前给字段手动添加了双引号,经过默认规则处理后就会变成"""string"""的格式。
解决方法
推荐使用pandas内置的引号控制参数实现需求,无需手动给字段加引号,避免重复转义:
- 第一步:删除你之前手动给
Post Town列加双引号的代码 - 第二步:调用
to_csv()时指定引号规则参数,示例代码如下:
import csv # 仅给非数值类型的列自动包裹ASCII双引号,符合预期效果 df.to_csv('filename.csv', index=False, quoting=csv.QUOTE_NONNUMERIC, quotechar='"')
如果你只需要给Post Town单列加双引号、其他列保持默认,可使用以下方案:
import csv # 提前给目标列加引号,同时关闭pandas的自动引号逻辑 df['Post Town'] = '"' + df['Post Town'].astype(str) + '"' df.to_csv('filename.csv', index=False, quoting=csv.QUOTE_NONE, escapechar='\\')
注意:第二种方案需要自行保证字段内容中没有逗号、换行符等CSV特殊字符,否则会导致格式错乱,优先推荐第一种方案。
内容的提问来源于stack exchange,提问作者Mizanur Choudhury
相关产品推荐
相关产品推荐

