Python中带嵌套引号的CSV转TSV输出不符合预期如何解决
Python CSV转TSV嵌套引号异常处理方案
根因说明
默认使用的csv.writer采用csv.QUOTE_MINIMAL引用策略,当字段内包含分隔符、双引号等特殊字符时,会自动为字段添加外层双引号,同时将字段内部的双引号转义为连续两个双引号,最终导致输出出现多余的引号。
实现代码
该方案基于CPython标准库的C优化版csv模块实现,逐行读写内存占用极低,性能为纯Python实现的顶级水平:
import csv import sys def csv_to_tsv(): # 配置CSV读取参数,自动把连续双引号解析为单个双引号 reader = csv.reader( sys.stdin, delimiter=',', quotechar='"', doublequote=True ) # 配置TSV写入参数,禁用自动加引号逻辑 writer = csv.writer( sys.stdout, dialect='excel-tab', quoting=csv.QUOTE_NONE, quotechar='', escapechar='' ) for row in reader: writer.writerow(row) if __name__ == "__main__": csv_to_tsv()
效果验证
使用你提供的示例输入运行上述代码,输出完全匹配你给出的预期结果:
AAA BBB Test, "Test" CCC DDD 111 222, "333" XXX YYY, ZZZ
内容的提问来源于stack exchange,提问作者Nir
相关产品推荐
相关产品推荐

