如何解决Pandas保存CSV自动加双引号及转义字符报错问题
解决Pandas保存CSV无引号问题
问题分析
使用Pandas的to_csv默认保存时,每行被双引号包裹;尝试quoting=csv.QUOTE_NONE并设置escapechar=''时触发_csv.Error: need to escape, but no escapechar set报错,且原始数据不含双引号。
解决方案
方案1:指定有效转义字符
设置quoting=csv.QUOTE_NONE时,必须搭配一个不会出现在数据中的有效字符作为escapechar,不能使用空字符串。示例代码:
import csv training_set.to_csv( os.path.join(output_dir, target_dir, 'training_set.csv'), index=False, header=False, quoting=csv.QUOTE_NONE, escapechar='|' # 选一个数据里没有的字符即可 )
只要数据中不存在|,输出的CSV就不会有引号,也不会触发转义逻辑。
方案2:直接写入文本文件(适合单列已拼接数据)
如果你的DataFrame是单列结构,每行已经是完整的逗号分隔字符串,可跳过Pandas的CSV格式化,直接逐行写入:
with open(os.path.join(output_dir, target_dir, 'training_set.csv'), 'w') as f: for line in training_set.iloc[:, 0]: # 取第一列的所有行 f.write(f"{line}\n")
这种方式完全由你控制输出内容,不会添加任何额外符号。
方案3:更换CSV分隔符
如果数据中存在逗号(导致Pandas自动加引号),可以更换一个数据中不存在的分隔符,同时关闭引号:
import csv training_set.to_csv( os.path.join(output_dir, target_dir, 'training_set.csv'), index=False, header=False, sep=';', # 用分号替代逗号作为分隔符 quoting=csv.QUOTE_NONE )
内容的提问来源于stack exchange,提问作者user366312
相关产品推荐
相关产品推荐

