将.CSV文件传输到Python中的列表

时间:2013-08-11 18:52:59

标签: python list csv

我正在尝试将CS​​V文件中的数据导入Python中的列表。这就是我到目前为止所做的:

import csv


with open('RawEirgrid2.csv','rb') as csvfile:

    M = csv.reader(csvfile, delimiter=',')


print(M[0])

我正在尝试打印列表中的第一项,只是确认代码正在运行(当前没有)。我收到以下错误:

TypeError: '_csv.reader' object is not subscriptable

在每个例子中,我看它似乎应该是可订阅的,所以我不确定它们是怎么回事。

4 个答案:

答案 0 :(得分:5)

所有这些都有效:

with open('RawEirgrid2.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    print next(reader)
with open('RawEirgrid2.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    lines = list(reader)

print lines[0]
with open('RawEirgrid2.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    for line in reader:
        print line
        break  # stop after the first line

csv.reader返回的对象是可迭代的,但不是序列,因此无法下标。请注意,如果您尝试在with语句之外使用reader,该文件将被关闭,并且它将出错 - 在您要求行之前,文件实际上不会被读取。

答案 1 :(得分:2)

这应该可以解决问题:

import csv

with open('RawEirgrid2.csv','rb') as csvfile:
    M = list(csv.reader(csvfile, delimiter=','))

print(M[0])

答案 2 :(得分:0)

M实际上是可迭代的,而不是列表。您可以使用以下

next(M)

l=[k for k in M]
print l[0]

编辑@ Eric关于弃用的提示。

答案 3 :(得分:0)

另一个选项是numpy.genfromtxt,例如:

import numpy as np
data = np.genfromtxt("yourfile.dat",delimiter=",")

这将使data成为一个numpy数组,其行和列数与文件中的数量相同