如何用Pandas读取^G分隔且带引号的CSV并去除引号与转义符?
解决Pandas读取带引号、^G分隔CSV时的引号和转义问题
问题根源
你设置了quoting=csv.QUOTE_NONE,这会让Pandas完全无视字段的引号包裹,直接把引号、转义斜杠当成普通内容读入,所以结果里才会残留这些符号。
正确读取方案
方案1:精准指定分隔符+启用引号解析
^G是ASCII码29对应的分组分隔符,直接用chr(29)指定分隔符比正则更准确,同时去掉quoting=csv.QUOTE_NONE,改用csv.QUOTE_ALL适配所有字段带引号的场景:
import pandas as pd import csv df = pd.read_csv( f, engine="python", sep=chr(29), header=None, names=columns, quoting=csv.QUOTE_ALL )
方案2:正则分隔符适配写法
如果一定要用正则匹配^G,注意它的十六进制表示是\x1D,配合正确的引号解析参数:
df = pd.read_csv( f, engine="python", sep=r"\x1D", header=None, names=columns, quoting=csv.QUOTE_ALL )
方案3:读取后批量清理(备选)
如果上述方案无法生效,可以读取后对所有字符串字段批量清理:
# 去除首尾引号,同时把转义的\"还原成" df = df.apply(lambda col: col.str.strip('"').str.replace('\\"', '"') if col.dtype == 'object' else col)
内容的提问来源于stack exchange,提问作者Harish
相关产品推荐
相关产品推荐

