python - 类型错误 : "quotechar" must be an 1-character string

标签 python csv python-2.7

我正在尝试从 csv 文件中读取数据。我将 quotechar 设置为 csv.QUOTE_NONE。

我为此写的四行Python代码如下——

import csv
with open('mtz.gps.comfort_gps_logs_20110214_20110215.csv', 'rb') as csvfile:
    taxiDataReader = csv.reader(csvfile, delimiter = ',', quotechar = csv.QUOTE_NONE)
    for row in taxiDataReader:
        print row

但是,当我运行这些程序时,我收到此错误消息 -

Traceback (most recent call last):
  File "log.py", line 3, in <module>
    taxiDataReader = csv.reader(csvfile, delimiter = ',', quotechar = csv.QUOTE_NONE)
TypeError: "quotechar" must be an 1-character string

我不仅想了解为什么会出现此特定错误,而且还想更详细地了解 quotechar 的真正作用。

最佳答案

QUOTE_NONE 是参数 quoting 的值,而不是 quotechar

正确的方法是使用

taxiDataReader = csv.reader(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)

The docs state quotechar 必须始终是单字符字符串,它的作用只是选择应该使用哪个字符进行引用。

引用在各种情况下变得有必要,例如

  • 如果 CSV 字段包含分隔符(例如逗号)
  • 如果 CSV 字段包含换行符。

在这两种情况下,CSV 阅读器都需要知道这些字符是原义字符,而不是控制字符。因此,如果您想将值 [1, "hello", "1,2,3", "hi\nthere"] 放入 CSV 文件中,如果结果会很糟糕是

1,hello,1,2,3,hi
there

不是吗?因此,这些字段被引用:

1,hello,"1,2,3","hi\nthere"

quoting 控制何时引用什么(默认为 QUOTE_MINIMAL,即,仅当绝对需要引用时)。如果您完全关闭引用 (QUOTE_NONE),quotechar 的值当然毫无意义。

关于python - 类型错误 : "quotechar" must be an 1-character string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16833209/

相关文章:

php - 错误 unicode 导出 csv 文件 - Laravel/Excel

python - 当玩家在 5x5 网格上画出 2x2 网格时,如何让游戏停止

python - 如何提取多个 .zip 文件?

python - 将字符串拆分为多个可能更改的变量

python - 合并来自 Github 存储库链接的所有 csv 文件,使其成为一个 csv 文件

c - 将 CSV 文件读取到结构数组

python - 如何在 sympy 中对向量求导?

python - 检查变量是否设置为 NO_VALUE

python - 更改列表列表中的元素以匹配 python 中的不同列表

python - Django 表单字段小部件变得隐藏