tags:

views:

261

answers:

2

I have set of csv headers that i am trying to match with uploads, it's not really working. Not all headers are required, just have to match what's in file


    reader = csv.DictReader(open(PathFile))
    headers = reader.fieldnames
    for header in sorted(set(headers)):
         if (header == 'ip') or (header == 'IP'):
             print  "IP found in Header"

in this case, IP is not

    for row in reader:
         if row.get('IP'):
             print  "IP found in Row"

not found again. I did search on this site, there was:

IP=row.get('IP', None)

that did not work either.

uplaod file, i am testing it with is

Email, IP, Name, City, State, zip, country, garbage
[email protected], 34.4.34.34,Mr GH, chicago, il ,60601, us,erw ewr 
[email protected], 34.45.23.34, Mr 5t,NY,NY,10101, us, er
A: 

I am not exactly sure what you want to achieve but if you simply want to know if some columns is in CSV, and you are sure that all rows have same columns, and you want to use dict reader use this

s="""col1,col2,col3
ok,ok,ok
hmm,hmm,hmm
cool,cool,cool"""

import csv

reader = csv.DictReader(s.split("\n"))
print reader.fieldnames
for row in reader:
    for colName in ['col3', 'col4']:
        print "found %s %s"%(colName, colName in row)
    break

It outputs

found col3 True
found col4 False

or something like this will work too

reader = csv.reader(s.split("\n"))
columns = reader.next()
for colName in ['col3', 'col4']:
    print "found %s %s"%(colName, colName in columns)
Anurag Uniyal
that did not work either. I edited my post with file data i am trying to process. Trying to see if the header has IP in it.
bocca
as Adam Bernier, said problem was with spaces
Anurag Uniyal
A: 

Based on your edit, you need to skip the initial space after the comma.

This should do it:

>>> reader = csv.DictReader(open(PathFile),skipinitialspace=True)
Adam Bernier
thanks, that worked
bocca