Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
List 使用两个不同的读取行命令从python 2.7中的CSV文件创建列表_List_Python 2.7_Csv - Fatal编程技术网

List 使用两个不同的读取行命令从python 2.7中的CSV文件创建列表

List 使用两个不同的读取行命令从python 2.7中的CSV文件创建列表,list,python-2.7,csv,List,Python 2.7,Csv,我是Python2.7的新手,使用以下代码创建了从csv文件中提取的观察列表 import csv data = [] with open(datafile,'rb') as f: for row in f: g=row data.append(g) 它生成以下列表(在读取第一行之后): 但当我使用以下代码读取csv文件并创建列表时: data = [] with open(datafile,'rb') as f: r = csv.reader(f)

我是Python2.7的新手,使用以下代码创建了从csv文件中提取的观察列表

import csv
data = []
with open(datafile,'rb') as f:
    for row in f:
       g=row
       data.append(g)
它生成以下列表(在读取第一行之后):

但当我使用以下代码读取csv文件并创建列表时:

data = []
with open(datafile,'rb') as f:
    r = csv.reader(f)
    for row in f
        data = [row for row in r]
我得到如下列表(在阅读第一行之后):

这似乎也是一个列表(关键区别在于列表中每个项目周围的撇号,而不仅仅是开头和结尾)


既然两者都是列表,为什么使用
data.append
的代码不提供类似的列表

第一个列表只有一个元素——一个包含整行的字符串,包括所有逗号

>>> l1 =['01/01/2005,01:00,0,0,0,2,0,0,2,0,0,2,0,0,2,0,0,2,0,0,2,0,0,2,0,3,E,9,3,E,9,8.0,A,7,6.0,A,7,87,A,7,1013,A,7,150,A,7,2.1,A,7,16100,A,7,77777,A,7,1.1,E,8,0.099,F,8,0.160,F,8,0,1,A,7']
>>> len(l1)
1
在第二个示例中,
csv.reader
将此行拆分为几个元素,并将它们放入列表中

>>> l2 = ['01/01/2005', '01:00', '0', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '3', 'E', '9', '3', 'E', '9', '8.0', 'A', '7', '6.0', 'A', '7', '87', 'A', '7', '1013', 'A', '7', '150', 'A', '7', '2.1', 'A', '7', '16100', 'A', '7', '77777', 'A', '7', '1.1', 'E', '8', '0.099', 'F', '8', '0.160', 'F', '8', '0', '1', 'A', '7']
>>> len(l2)
68
还要注意,第二个示例中的循环有些奇怪。我假设这不是您的实际代码,因为其中存在语法错误。或许应该是:

r = csv.reader(f)
for row in r:         # row in r, not row in f
    data.append(row)  # append row to data -> 2d-array of items in rows

谢谢你的解释和洞察力。循环的代码是正确的。我打错了。
>>> l2 = ['01/01/2005', '01:00', '0', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '0', '2', '0', '3', 'E', '9', '3', 'E', '9', '8.0', 'A', '7', '6.0', 'A', '7', '87', 'A', '7', '1013', 'A', '7', '150', 'A', '7', '2.1', 'A', '7', '16100', 'A', '7', '77777', 'A', '7', '1.1', 'E', '8', '0.099', 'F', '8', '0.160', 'F', '8', '0', '1', 'A', '7']
>>> len(l2)
68
r = csv.reader(f)
for row in r:         # row in r, not row in f
    data.append(row)  # append row to data -> 2d-array of items in rows