Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:“输入错误”;“Echar”;必须是1个字符的字符串_Python_Csv_Python 2.7 - Fatal编程技术网

Python TypeError:“输入错误”;“Echar”;必须是1个字符的字符串

Python TypeError:“输入错误”;“Echar”;必须是1个字符的字符串,python,csv,python-2.7,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 r

我正在尝试从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
回溯(最近一次呼叫最后一次):
文件“log.py”,第3行,在
taxiDataReader=csv.reader(csvfile,分隔符=',',quotechar=csv.QUOTE_无)
TypeError:“quotechar”必须为1个字符的字符串

我不仅想了解出现此特定错误的原因,还想更详细地了解quotechar的作用。

QUOTE\u NONE
是参数
QUOTE
的值,而不是
quotechar

正确的方法是使用

taxiDataReader = csv.reader(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
quotechar
必须始终是一个单字符字符串,它的作用只是选择引用哪个字符

例如,在各种情况下都需要引用

  • 如果CSV字段包含分隔符(例如逗号)
  • 如果CSV字段包含换行符
在这两种情况下,CSV阅读器都需要知道这些字符是指文字字符,而不是控制字符。因此,如果要将值
[1,“hello”,“1,2,3”,“hi\n here”]
放入CSV文件中,如果结果是

1,hello,1,2,3,hi
there
不是吗?因此,引用以下字段:

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

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

我仍然不清楚quotechar和quoting的作用是什么。为什么要引用某些东西?如果你能用一些csv数据作为例子来解释这一点,那将是非常棒的,这样我就可以理解这个需求了。非常感谢你的回答!但是,QUOTE_NONE在读取CSV文件时是否有任何意义?要引用的字段已被引用。另外,你能详细说明一下报价单吗?谢谢你的耐心和努力:)我想我自己也明白了。如果我错了,请纠正我。quotechar是用于引用的字符。引用控制将引用的内容。