如何将CSV字段的三重引号改为单引号并导出新CSV
解决CSV三重引号转单引号(双引号)包裹的问题
直接上可行方案,分两步处理:
第一步:读取时清理三重引号
读取CSV文件时,先把每个字段前后的三重引号(""")彻底清除,得到纯内容的DataFrame:
import pandas as pd # 先获取所有列名,避免重复读取全量数据 cols = pd.read_csv("input.csv", nrows=0).columns # 用转换器清除每个字段的三重引号 df = pd.read_csv( "input.csv", converters={col: lambda x: x.strip('"""') for col in cols} )
这一步之后,DataFrame里的每个值都是不带任何多余引号的纯内容,比如原数据里的"""1"""会变成1,邮箱会变成纯字符串格式。
第二步:导出时强制添加双引号包裹
导出CSV时,指定用双引号包裹所有字段,避免pandas自动生成多余引号:
import csv df.to_csv( "output.csv", index=False, quotechar='"', quoting=csv.QUOTE_ALL, escapechar='\\' # 防止字段内自带引号时出现转义异常 )
这里的quoting=csv.QUOTE_ALL会强制给每个字段加上quotechar指定的双引号,正好符合你要的"1"、"junglehouse1@yahoo.com"格式。
之前尝试失败的原因
直接用read_csv读取时,pandas会把"""1"""解析为带双引号的字符串(即"1"),但导出时如果没设置quoting=csv.QUOTE_ALL,pandas只会给包含特殊字符的字段加引号;而且如果字段本身已经带引号,pandas会自动转义成三重引号,这就是你导出后仍看到三重引号的核心原因。
内容的提问来源于stack exchange,提问作者Maggie Liu
相关产品推荐
相关产品推荐

