【发布时间】:2021-09-10 10:03:53
【问题描述】:
我有一个 CSV 文件,其中包含如下行:
"AAA","BBB","Test,""Test""","CCC",DDD
"111","222,""333""","XXX","YYY, ZZZ"
处理嵌套引号不能提供所需的结果:
AAA BBB "Test, ""Test""" CCC DDD
111 "222, ""333""" XXX YYY, ZZZ
想要的结果:
AAA BBB Test, "Test" CCC DDD
111 222, "333" XXX YYY, ZZZ
这是我尝试过的:
csv.writer(sys.stdout, dialect='excel-tab').writerows(csv.reader(sys.stdin))
csv.writer(sys.stdout, dialect='excel-tab').writerows(csv.reader(sys.stdin, delimiter=',', quotechar='"'))
csv.writer(sys.stdout, dialect='excel-tab', delimiter='\t').writerows(csv.reader(sys.stdin, delimiter=',', quotechar='"'))
顺便说一句,性能很重要。
【问题讨论】:
-
真正的问题似乎在于逗号周围的空格。你真的真的在每个之后都有一个空间吗? (为什么?)
-
不,很好
-
我相信您的“期望结果”不再是有效的 CSV。您可以使用
csv.writer(sys.stdout, dialect='excel-tab', csv.QUOTE_NONE)请求此操作,但是当您尝试编写需要引用的行时会出现错误。 -
“不再”是什么意思? csv 格式/标准改变了吗?
-
好像没有一个“标准”;这是微软的领地。
标签: python python-3.x csv