如何正确将pandas处理后的文本保存为符合预期格式的CSV文件
问题说明
现有存储数字内容的.txt文件,需要去除内容中的空格,原始数据如下:
12 12345 1234 23 23456 234
前期使用如下代码处理数据:
data=data[0].str.replace(" ","") data.update('\'' + data + '\'',)
处理后内存中的数据格式符合预期:
'12123451234', '2323456234',
但调用to_csv方法将数据追加保存到文件时,多次调整参数都无法得到正确结果,具体异常表现包括:
- 使用默认参数保存时,内容外层被额外包裹双引号
- 设置
quoting=3(即csv.QUOTE_NONE)并指定escapechar参数时,会出现多余的反斜杠转义符;将空格或空值设为escapechar则代码无法正常运行 - 仅去除空格、不手动添加引号和逗号,设置
quoting=1、sep=","保存时,内容缺少所需的逗号 - 手动添加逗号后用相同参数保存,会出现双引号包裹、逗号位置错误的问题
实现方案
所有格式异常的核心原因是:手动给数据拼接了CSV语法中的特殊字符(单引号、逗号),同时又让pandas的CSV写入模块自动执行格式转义,两套格式逻辑冲突。
不要手动在数据处理阶段拼接引号、逗号,根据需求选下面任意一种方案即可:
方案1:按普通文本写入(最稳定,无转义问题)
如果你的输出不需要符合标准CSV格式,只是要得到每行'处理后内容',的文本,直接跳过to_csv的CSV格式化逻辑,用普通文件写入方式实现,完全不会出现多余符号:
# 仅保留去空格逻辑,删除之前手动拼接单引号的代码 clean_data = data[0].str.replace(" ", "") # 追加写入文件 with open("你的输出文件路径.txt", "a", encoding="utf-8") as f: for val in clean_data: f.write(f"'{val}',\n")
运行后输出内容和内存中预期格式完全一致,无多余双引号、反斜杠。
方案2:调整to_csv参数实现
如果必须使用to_csv方法写入,删除手动拼接单引号的代码,按如下参数配置即可:
import csv # 仅保留去空格逻辑 clean_data = data[0].str.replace(" ", "") clean_data.to_csv( "你的输出文件路径.txt", mode="a", # 追加写入模式 index=False, header=False, sep=",", quotechar="'", quoting=csv.QUOTE_ALL, lineterminator=",\n" )
参数说明:
quotechar="'"指定用单引号作为字段包裹符号,替代默认的双引号quoting=csv.QUOTE_ALL指定给所有字段加包裹符号lineterminator=",\n"在每行末尾自动加逗号和换行,不需要手动拼接
内容的提问来源于stack exchange,提问作者Towlie
相关产品推荐
相关产品推荐

