我正在尝试将CSV文件中的数据导入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
在每个例子中,我看它似乎应该是可订阅的,所以我不确定它们是怎么回事。
答案 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数组,其行和列数与文件中的数量相同