如何使导出的CSV文件中所有字段保留双引号?
问题分析与解决方法
你的问题出在手动给字段添加双引号的操作,和pandas导出CSV的默认规则冲突,导致最终导出的文件没有符合预期的引号格式。
错误原因
当你执行df[i] = '"' + df[i] + '"'时,是把双引号当成了字段值的一部分(比如字段值变成了"123"),而不是CSV格式中用于包裹字段的语法符号。
而pandas.to_csv()默认使用quoting=csv.QUOTE_MINIMAL规则:只有当字段包含逗号、换行符等特殊字符时,才会自动给字段添加包裹引号。你的字段值现在是带双引号的字符串,但本身没有特殊分隔符,所以导出时不会被额外添加包裹引号;当你用CSV阅读器(比如Excel)打开文件时,这些作为内容的双引号会被解析逻辑忽略,最终看起来就像引号消失了。
正确解决方法
不需要手动修改字段值,直接通过to_csv()的参数强制给所有字段添加引号:
- 先导入
csv模块(如果尚未导入) - 导出时指定
quoting=csv.QUOTE_ALL参数,若需要保留字段间的空格,加上sep=', '(逗号加空格)
示例代码:
import csv import pandas as pd # 假设df已加载目标数据 df.to_csv('test1.csv', quoting=csv.QUOTE_ALL, sep=', ')
这样导出的CSV文件会直接生成你期望的格式:
"123", "Peter", "40.83429", "2023-10-23"
补充说明
如果你之前已经手动给字段加了引号,需要先清理这些额外引号再导出,否则会出现双层引号的情况。清理代码如下:
for col in df.columns: df[col] = df[col].str.strip('"')
内容的提问来源于stack exchange,提问作者Maggie Liu
相关产品推荐
相关产品推荐

