15

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!).

1
  • 1
    loop from second one. like: for i in range(1, len(data_list)): Commented Feb 10, 2018 at 1:56

2 Answers 2

35
import csv

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

This is working for me, try this.

Sign up to request clarification or add additional context in comments.

Comments

31

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.