使用Pandas导入含注释CSV时多余引号问题的解决方法
解决pandas读取带#注释的inp文件导出csv时出现多余引号的问题
问题根源
使用pd.read_csv('op.inp', sep='delimiter')时,pandas会将每行解析为单个字符串字段。当行内包含逗号、引号或其他特殊字符时,导出CSV时pandas会自动添加引号包裹字段,导致出现多余引号(比如最后一行被额外包裹、部分行末尾出现异常引号)。
解决方案1:直接读写文件(无需pandas处理内容时优先用)
如果不需要对文件内容做数据处理,直接读取原文件的所有行并原样写入目标CSV,完全避免pandas的字段解析逻辑:
with open('op.inp', 'r', encoding='utf-8') as infile, open('out.csv', 'w', encoding='utf-8') as outfile: outfile.writelines(infile.readlines())
解决方案2:用pandas处理后无引号导出
如果需要用pandas做数据处理,先读取所有行转为DataFrame,再导出时禁用自动引号:
import pandas as pd # 读取原始文件所有行,保留注释、空行和原格式 with open('op.inp', 'r', encoding='utf-8') as f: lines = f.readlines() # 转为DataFrame(如需处理内容可在此操作) df = pd.DataFrame(lines, columns=['content']) # 导出时禁用引号,不写索引和表头 df.to_csv( 'out.csv', index=False, header=False, quoting=3, # QUOTE_NONE,禁用所有引号 escapechar=None # 不需要转义字符 )
关键参数说明
quoting=3:对应csv.QUOTE_NONE,告诉pandas导出时不给任何字段添加引号。header=False:因为原文件没有表头,避免导出时额外添加表头行。index=False:避免导出时添加默认的索引列。
内容的提问来源于stack exchange,提问作者Krishnaap
相关产品推荐
相关产品推荐

