Csv Read Specific Row
I have a CSV file with 100 rows. How do I read specific rows? I want to read say the 9th line or the 23rd line etc?
Solution 1:
You could use a list comprehension
to filter the file like so:
withopen('file.csv') as fd:
reader=csv.reader(fd)
interestingrows=[row for idx, row inenumerate(reader) if idx in (28,62)]
# now interestingrows contains the 28th and the 62th row after the header
Solution 2:
Use list
to grab all the rows at once as a list. Then access your target rows by their index/offset in the list. For example:
#!/usr/bin/env pythonimport csv
withopen('source.csv') as csv_file:
csv_reader = csv.reader(csv_file)
rows = list(csv_reader)
print(rows[8])
print(rows[22])
Solution 3:
You simply skip the necessary number of rows:
withopen("test.csv", "rb") as infile:
r = csv.reader(infile)
for i inrange(8): # count from 0 to 7next(r) # and discard the rows
row = next(r) # "row" contains row number 9 now
Solution 4:
You could read all of them and then use normal lists to find them.
withopen('bigfile.csv','rb') as longishfile:
reader=csv.reader(longishfile)
rows=[r for r in reader]
print row[9]
print row[88]
If you have a massive file, this can kill your memory but if the file's got less than 10,000 lines you shouldn't run into any big slowdowns.
Solution 5:
You can do something like this :
withopen('raw_data.csv') as csvfile:
readCSV = list(csv.reader(csvfile, delimiter=','))
row_you_want = readCSV[index_of_row_you_want]
Post a Comment for "Csv Read Specific Row"