encabezados csv python

Tengo un conjunto de encabezados csv que estoy tratando de hacer coincidir con las subidas. Realmente no está funcionando. No todos los encabezados son obligatorios, solo tengo que coincidir con lo que hay en el archivo.

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" 

En este caso, no se encuentra IP.

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

No se encuentra de nuevo. Hice una búsqueda en este sitio – había

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

Eso tampoco funcionó.

Este es el archivo que estoy usando para probar:

 Email, IP, Name, City, State, zip, country, garbage ghfddgf@gfgs.com, 34.4.34.34,Mr GH, chicago, il ,60601, us,erw ewr 5t4g@fdsf.com, 34.45.23.34, Mr 5t,NY,NY,10101, us, er 

Según su edición, debe omitir el espacio inicial después de la coma.

Esto debería hacerlo:

 >>> reader = csv.DictReader(open(PathFile),skipinitialspace=True) 

No estoy exactamente seguro de lo que quiere lograr, pero si simplemente quiere saber si algunas columnas están en CSV, y está seguro de que todas las filas tienen las mismas columnas, y desea usar el lector de dict, use esto

 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 

Da salida

 found col3 True found col4 False 

O algo como esto funcionará también

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