如何使用to_csv将DataFrame转为无引号且不破坏内容的CSV文件
解决DataFrame导出CSV时自动加引号的问题
问题根源
你的DataFrame每个单元格已经是smiles内容;数字的完整行格式,但导出时指定了sep=';',pandas会把单元格内的;误判为列分隔符,自动添加引号避免解析歧义。
正确导出方案
- 方案1:pandas直接导出(推荐)
指定一个不会出现在数据中的字符作为分隔符(比如制表符\t),同时关闭引号功能:
import csv df_test.to_csv('path', index=False, header=False, sep='\t', quoting=csv.QUOTE_NONE)
由于数据中不存在制表符,pandas不会对内容做任何转义或加引号操作,直接输出原始格式。
- 方案2:手动写入文件
如果不确定哪个字符不会冲突,直接遍历每行写入:
with open('path', 'w', encoding='utf-8') as f: for content in df_test.iloc[:, 0]: f.write(f"{content}\n")
原有方法失败原因
- 初始方法:单元格包含
sep指定的;,pandas自动添加引号防止列解析错误。 - 方法一:关闭引号但未设置转义符,pandas无法处理内容中的
;,触发报错。 - 方法二:用
;作为转义符,会把内容里的;转义为;;,导致格式错误。 - 方法三:用空字符
\0转义,会在;前插入不可见的null符号,不符合需求。
内容的提问来源于stack exchange,提问作者joe doe
相关产品推荐
相关产品推荐

