["python"]
Reading column names alone in a csv file

I have a csv file with the following columns: id,name,age,sex Followed by a lot of values for the above columns. I am trying to read the column names alone and put them inside a list. I am using Dictreader and this gives out the correct details: with open('details.csv') as csvfile: i=["name","age","sex"] re=csv.DictReader(csvfile) for row in re: for x in i: print row[x] But what I want to do is, I need the list of columns, ("i" in the above case)to be automatically parsed with the input csv than hardcoding them inside a list. with open('details.csv') as csvfile: rows=iter(csv.reader(csvfile)).next() header=rows[1:] re=csv.DictReader(csvfile) for row in re: print row for x in header: print row[x] This gives out an error Keyerrror:'name' in the line print row[x]. Where am I going wrong? Is it possible to fetch the column names using Dictreader?
You can read the header by using the next() function which return the next row of the reader’s iterable object as a list. then you can add the content of the file to a list. import csv with open("C:/path/to/.filecsv", "rb") as f: reader = csv.reader(f) i = reader.next() rest = list(reader) Now i has the column's names as a list. print i >>>['id', 'name', 'age', 'sex'] Also note that reader.next() does not work in python 3. Instead use the the inbuilt next() to get the first line of the csv immediately after reading like so: import csv with open("C:/path/to/.filecsv", "rb") as f: reader = csv.reader(f) i = next(reader) print(i) >>>['id', 'name', 'age', 'sex']