python - 为什么此代码会引发 csv.Error?

标签 python csv

我正在尝试使用 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说:

When the current delimiter occurs in output data it is preceded by the current escapechar character. If escapechar is not set, the writer will raise Error if any characters that require escaping are encountered.

现在,分隔符('|',竖线字符)不会出现在数据中的任何地方。为什么 CSV 编写器试图转义某些内容?

最佳答案

设置 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那个。

关于python - 为什么此代码会引发 csv.Error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296356/

相关文章:

python - 在 Python 中分割字符串列并提取第二部分

perl - 解析 CSV 文件和散列

python - 变量在函数调用之间不清除

python - 将 CSV 文件转换为 pandas 的 'flat file"

Python:将方阵提高到负半幂

python - 在 python 中打印到终端窗口

python - 如何在 Django 中编写模型字段的验证器?

python - 将多个 csv 文件读入 Pandas Data Frame

sql - 地址中包含逗号的 CSV 文件

python key() 错误