如何在Pandas中保留输入文件中的引号输出?
解决Pandas保存CSV时丢失引号的问题
问题原因
Pandas默认会将CSV中的双引号视为字段包裹符,读取时自动剥离外层引号;保存时仅当字段包含分隔符等特殊字符时才会自动添加引号,导致单纯带引号的字段内容丢失引号。
解决方案
通过修改read_csv和to_csv的参数,让Pandas不解析引号,直接保留原始字符:
修改后的代码
import pandas as pd from io import StringIO import csv # Input file csv_data = '''A,B,C,D,E 234,mno,C22,U, 567,pqr,"C3""",U,5555 999,abc,"C99",D,9999 ''' # 读取数据时关闭引号解析 df = pd.read_csv( StringIO(csv_data), header=0, dtype=str, keep_default_na=False, engine='python', sep=',', quoting=csv.QUOTE_NONE # 关键:不将引号视为CSV特殊语法,保留原始字符 ) # 保存数据时关闭引号处理 df.to_csv( 'output.txt', sep=',', index=False, header=True, quoting=csv.QUOTE_NONE, # 关键:不自动添加/删除引号,直接输出原始内容 escapechar=None )
验证结果
运行后output.txt内容将与期望一致:
A,B,C,D,E 234,mno,C22,U, 567,pqr,"C3""",U,5555 999,abc,"C99",D,9999
补充说明
csv.QUOTE_NONE参数强制Pandas在读写过程中,把双引号当作普通字符串处理,而非CSV语法的一部分。- 必须导入
csv模块才能使用该常量。
内容的提问来源于stack exchange,提问作者SpaceyBot
相关产品推荐
相关产品推荐

