如何使用Python Pandas清除CSV文件部分行中的三重双引号
问题原因
你使用csv.QUOTE_ALL模式配合quotechar='"'解析时,遵循CSV标准的解析器会把连续两个双引号识别为转义的单个双引号,因此单元格内的三个连续双引号会被判定为「1个转义双引号 + 未闭合的字段边界」,最终触发解析错误。
可行解决方案
方案1:预处理原始内容直接删除所有双引号(最适配你的需求)
你明确需要移除所有单元格内的双引号,直接在解析前清洗原始内容即可,完全避开转义解析冲突:
import io import pandas as pd import csv body = object.get()['Body'].read() # 解码后替换所有双引号,再编码回字节流 processed_body = body.decode("utf-8").replace('"', "").encode("utf-8") reader = pd.read_csv( io.BytesIO(processed_body), delimiter=",", encoding="utf8", skipinitialspace=True )
处理后你示例中的"""单元格会自动转为空值,"JOE"会转为JOE,完全符合需求。
方案2:关闭引号识别先保证解析成功,再二次清洗
如果有其他场景需要先保证所有行解析不报错,再统一处理引号,可调整解析参数:
reader = pd.read_csv( io.BytesIO(body), delimiter=",", quotechar='"', encoding="utf8", quoting=csv.QUOTE_NONE, # 不把双引号识别为字段边界 skipinitialspace=True ) # 统一移除所有单元格的双引号 reader = reader.apply(lambda col: col.str.replace('"', "", regex=False))
内容的提问来源于stack exchange,提问作者Ravikant Pandey
相关产品推荐
相关产品推荐

