Python CSV reader读取TSV时引号后制表符解析错误如何解决?
问题原因
你遇到的字段合并问题是Python标准库csv模块的默认行为导致的:默认会将双引号识别为字段引用符,当遇到未闭合的双引号时,模块会认为后续的制表符都属于当前字段的内部内容,直到匹配到下一个双引号才会结束当前字段,因此出现多字段被合并的情况。
解决方案
调整csv.reader的引号相关配置,禁用引号的特殊解析逻辑即可,修改后的代码如下:
import csv # 建议使用with上下文管理器自动处理文件关闭,按需调整文件编码参数 with open('sample.csv', 'r', encoding='utf-8') as f: # 核心配置:禁用引号识别,仅按制表符分割字段 reader = csv.reader( f, delimiter='\t', quoting=csv.QUOTE_NONE, # 不识别任何字段引用符 quotechar='' # 显式将引用字符设为空,避免默认的双引号解析 ) for chunk in reader: print(chunk)
参数说明
quoting=csv.QUOTE_NONE:通知csv模块不对字段做任何引用包裹的识别处理,所有内容按普通文本解析quotechar='':彻底清空默认的双引号引用字符配置,保证字段内的双引号会被当作普通文本完整保留,不会被特殊处理
该配置会完全按制表符分割字段,同时原样保留字段内的所有引号内容,完全符合你的预期输出要求。
内容的提问来源于stack exchange,提问作者Someone
相关产品推荐
相关产品推荐

