How To Loop Through Specific Range Of Rows With Python Csv Reader?
How to loop through a specific range of rows with Python csv reader? The following code loops through all rows: with open(trainFile, 'rt') as csvfile: spamreader = csv.reader(c
Solution 1:
You can use itertools.islice
:
import itertools
i, j = 10, 20withopen(trainFile, 'rt') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in itertools.islice(spamreader, i, j+1):
print (', '.join(row))
Alternative (following code is possible because csv.reader accept an iterable):
NOTE: only works when CSV rows do not contain newline.
import itertools
i, j = 10, 20withopen(trainFile, 'rt') as csvfile:
spamreader = csv.reader(itertools.islice(csvfile, i, j+1),
delimiter=' ', quotechar='|')
for row in spamreader:
print (', '.join(row))
Solution 2:
Use islice
, eg:
rows_1_to_50 = itertools.islice(spamreader, 0, 50)
for row in rows_1_to_50:
pass
Solution 3:
Another itertools implementation using dropwhile
and takewhile
from itertools import takewhile, dropwhile
trainFile = 'x.1'
low_lim = 3
high_lim = 6withopen(trainFile, 'rt') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
g = (x for x inenumerate(spamreader, 1))
g = dropwhile(lambda x: x[0] < low_lim, g)
g = takewhile(lambda x: x[0] <= high_lim, g)
for row in g:
print (', '.join(row[1]))
Post a Comment for "How To Loop Through Specific Range Of Rows With Python Csv Reader?"