Python导出DataFrame到文本文件时字符串自动转义双引号如何解决?
问题原因
你遇到的转义属于pandas导出文本/CSV文件的默认CSV规范处理逻辑:当字段内容包含引号、分隔符时,pandas默认会为字段外层包裹双引号,同时将字段内的双引号双写转义,符合标准CSV格式要求,并非Python原生的字符串自动转义机制导致。
修复方案
方案1:调整pandas to_csv 导出参数(推荐)
通过设置导出参数关闭自动引号处理,直接保留原始字符串内容:
- 需要先导入Python内置的
csv模块,设置quoting=csv.QUOTE_NONE关闭所有自动引号转义逻辑 - 可根据你的分隔符实际情况调整
sep参数
代码示例:
import pandas as pd import csv # 替换为你自己的DataFrame变量名 df.to_csv( "导出文件路径.txt", sep="|", # 和你原始数据的分隔符保持一致,此处为竖线 quoting=csv.QUOTE_NONE, quotechar="", # 取消引号字符的特殊识别 index=False, # 不需要导出索引时可添加该参数 encoding="utf-8" )
注意:如果你的字段内容中包含分隔符(此处为
|),关闭引号处理后可能会导致后续读取该文件时出现列错位的问题,如果你仅需要保留原始字符串输出、不需要兼容标准CSV读取逻辑,可忽略该注意事项。
方案2:手动逐行写入(完全可控)
如果需要100%控制输出格式,不触发任何pandas默认处理逻辑,可以手动遍历DataFrame逐行拼接写入:
with open("导出文件路径.txt", "w", encoding="utf-8") as f: # 写入表头 f.write("ID | Description\n") # 逐行写入数据 for _, row in df.iterrows(): f.write(f"{row['ID']} | {row['Description']}\n")
内容的提问来源于stack exchange,提问作者yuzu
相关产品推荐
相关产品推荐

