我正在尝试从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的作用是什么。
答案 0 :(得分:11)
QUOTE_NONE
表示参数quoting
的值,而不是quotechar
的值。
正确的方法是使用
taxiDataReader = csv.reader(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
The docs state quotechar
必须始终是一个字符的字符串,其作用只是选择应该使用哪个字符进行引用。
在各种情况下都需要引用,例如
在这两种情况下,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
的值当然毫无意义。