为什么这段代码会引发csv.Error?

mpe*_*kov 7 python csv

我正在尝试使用Python的内置csv模块写出CSV .

import csv
import sys
writer = csv.writer(sys.stdout, delimiter="|", quoting=csv.QUOTE_NONE)
writer.writerow(['"foo', "bar"])
Run Code Online (Sandbox Code Playgroud)

我期望的输出是:

"foo|bar
Run Code Online (Sandbox Code Playgroud)

但是,我明白了:

Error: need to escape, but no escapechar set
Run Code Online (Sandbox Code Playgroud)

文件说:

当输出数据中出现当前分隔符时,它前面是当前的escapechar字符.如果未设置escapechar,则在遇到需要转义的任何字符时,编写器将引发Error.

现在,分隔符('|',管道字符)不会出现在数据中的任何位置.为什么CSV编写器试图逃避某些事情?

Mar*_*ers 12

设置quoting=csv.QUOTE_NONE还不够; 你还需要设置quotechar一个空字符串:

>>> import sys
>>> import csv
>>> writer = csv.writer(sys.stdout, delimiter="|", quoting=csv.QUOTE_NONE, quotechar='')
>>> writer.writerow(['"foo', "bar"])
"foo|bar
Run Code Online (Sandbox Code Playgroud)

否则,csv.writer()将尝试转义任何现有quotechar字符,但需要csv.escapechar为此设置.

  • 我一直面临同样的问题.即使将quotechar设置为空字符串,我也得到csv.Error csv.writer(csvoutfile,quoting = csv.QUOTE_NONE,quotechar ='')错误为:错误:需要转义,但没有escapechar设置上面的解决方案做了不修复错误.我在这里失踪的是什么? (2认同)