在Python中读取CSV的特定行
我正在打开一个大的CSV文件,在将数据插入阵列的过程中,我得到了MemoryError。那么如何读取该CSV文件的特定行(例如从第1行到第10000行) 代码如下:在Python中读取CSV的特定行,python,csv,Python,Csv,我正在打开一个大的CSV文件,在将数据插入阵列的过程中,我得到了MemoryError。那么如何读取该CSV文件的特定行(例如从第1行到第10000行) 代码如下: datafile=open('test.csv','r') datareader=csv.reader(datafile,delimiter=';') for row in datareader: MyArray.append(row) 使用: 或者,对于任何范围: start = 1000 stop = 2000 fo
datafile=open('test.csv','r')
datareader=csv.reader(datafile,delimiter=';')
for row in datareader:
MyArray.append(row)
使用:
或者,对于任何范围:
start = 1000
stop = 2000
for i, row in enumerate(datareader):
if i < start:
continue # skip this row
elif i > stop:
break # abort the loop
else: # ("else" is not strictly necessary here, but more explicit)
MyArray.append(row)
start=1000
停止=2000
对于i,枚举(datareader)中的行:
如果我开始:
继续#跳过这一行
elif i>停止:
中断#中止循环
else:#(“else”在这里不是严格必要的,但更明确)
MyArray.append(行)
使用:
或者,对于任何范围:
start = 1000
stop = 2000
for i, row in enumerate(datareader):
if i < start:
continue # skip this row
elif i > stop:
break # abort the loop
else: # ("else" is not strictly necessary here, but more explicit)
MyArray.append(row)
start=1000
停止=2000
对于i,枚举(datareader)中的行:
如果我开始:
继续#跳过这一行
elif i>停止:
中断#中止循环
else:#(“else”在这里不是严格必要的,但更明确)
MyArray.append(行)
我将使用而不是枚举
:
from itertools import islice
# First 10000
MyArray.extend(islice(datareader, 10000))
# Or, specify start/stop ranges (10000-20000 (non inclusive))
MyArray.extend(islice(datareader, 10000, 20000))
# Or read in chunks of 10k
for chunk in iter(lambda: list(islice(datareader, 10000)), []):
# do something with 10k rows
我将使用而不是枚举:
from itertools import islice
# First 10000
MyArray.extend(islice(datareader, 10000))
# Or, specify start/stop ranges (10000-20000 (non inclusive))
MyArray.extend(islice(datareader, 10000, 20000))
# Or read in chunks of 10k
for chunk in iter(lambda: list(islice(datareader, 10000)), []):
# do something with 10k rows
您的csv文件有多大?为什么要将这些行放入一个数组(
list
?np.array
?)中,而不仅仅是重复它们?你想实现什么?Tim的答案很好,超过1GB,大约900万条线路。我需要行中的数据内容(它是网络数据包)您的csv文件有多大?为什么要将行放入数组(list
?np.array
?),而不仅仅是重复它们?你想实现什么?Tim的答案很好,超过1GB,大约900万条线路。我需要的数据内容行(它是网络数据包)哦,更好。我以前从未使用过islice
,但这确实是一个完美的例子@用户3636424,你可能想接受这个答案。@Tim我不在乎接受/重复-只是很高兴它对某人有用:)@JonClements:我也不介意,但这是更好的答案,应该放在首位。@Tim好吧-看来OP采纳了你的建议。。。谢谢你的编辑。哦,好多了。我以前从未使用过islice
,但这确实是一个完美的例子@用户3636424,你可能想接受这个答案。@Tim我不在乎接受/重复-只是很高兴它对某人有用:)@JonClements:我也不介意,但这是更好的答案,应该放在首位。@Tim好吧-看来OP采纳了你的建议。。。谢谢你的编辑。