【问题标题】:Why does this code raise csv.Error?为什么这段代码会引发 csv.Error?
【发布时间】:2014-04-25 14:48:12
【问题描述】:

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

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

我期望的输出是:

"foo|bar

但是,我明白了:

Error: need to escape, but no escapechar set

documentation 说:

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

现在,分隔符('|',竖线字符)不会出现在数据中的任何位置。为什么 CSV 编写器试图逃避某些东西?

【问题讨论】:

    标签: python csv


    【解决方案1】:

    设置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
    

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

    【讨论】:

    • 我也遇到过同样的问题。即使将quotechar设置为空字符串,我也会收到 csv.Error csv.writer(csvoutfile, quoting=csv.QUOTE_NONE, quotechar='') 错误为:错误:需要转义,但没有设置转义符以上解决方案确实不修复错误。我在这里错过了什么?
    • 这并不能告诉我任何事情。也许您可以创建一个新问题?请确保在其中包含minimal reproducible example,以便我们重现您的问题并验证潜在的解决方案。
    • 谢谢。我已经发布了一个新问题。 stackoverflow.com/questions/36277973/….
    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2016-02-03
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多