14

I tried this proposed solution on a large (7000 line) csv file): Read File From Line 2 or Skip Header Row`

The following code worked but only if I manually remove the header:

RatedTracksFile = open('pyall_rated.csv')
RatedTracksReader = csv.reader(RatedTracksFile)
data_list = list(csv.reader(RatedTracksFile))
eligible1 = open('py_all1.csv', 'a') # open py_all1.csv in append mode
for i in range(len(data_list)):
    trackrating = int(data_list[i][12])
    ...

I tried different ways of adding this suggested code:

with open(fname) as f:
    next(f)
    for line in f:

I am new to python and cannot figure out how to add that in. I keep getting the same value type error since it still reads row 1,col 12 (which is a string from the header) and not the integer found on row 2, col 12:

ValueError: invalid literal for int() with base 10: 'GroupDesc'

SOLVED: Based on Sphinx' comment below (thanks!).

user3447273
  • 351
  • 1
  • 4
  • 12

2 Answers2

36
import csv
with open("1800.csv", "rb") as files:
   reader = csv.reader(files)
   next(reader, None)
   for data in reader:
      print data

This is working for me, try this.

Brad Solomon
  • 38,521
  • 31
  • 149
  • 235
Prabhat jha
  • 519
  • 4
  • 6
28

If your header contains your column names, the nicest solution is to use csv.DictReader

>>> import csv
>>> with open('names.csv') as csvfile:
...     reader = csv.DictReader(csvfile)
...     for row in reader:
...         print(row['first_name'], row['last_name'])
...
Baked Beans
Lovely Spam
Wonderful Spam
jamylak
  • 128,818
  • 30
  • 231
  • 230