TypeError:“quotechar”必须是1个字符的字符串

2024-06-06 07:07:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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的真正作用是什么。


Tags: 文件csvcsvfileinimportnone错误读取数据
1条回答
网友
1楼 · 发布于 2024-06-06 07:07:06

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

正确的方法是

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

The docs statequotechar必须始终是一个单字符字符串,其作用只是选择引用时应使用的字符。

引用在很多情况下都是必要的,例如

  • 如果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的值当然毫无意义。

相关问题 更多 >