2009-11-17 15 views
17

Ho un set di intestazioni csv che sto cercando di abbinare con i caricamenti. Non funziona davvero. Non tutte le intestazioni sono obbligatorie - Devo solo abbinare ciò che è nel file.intestazioni csv python

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 questo caso, IP non viene trovato.

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

Non si trova più. Ho cercato su questo sito - c'era:

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

Anche questo non ha funzionato.

Questo è il file che sto utilizzando per il test:

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 

risposta

11

base alla tua modifica, è necessario skip the initial space dopo la virgola.

Questo dovrebbe farlo:

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

io non sono esattamente sicuro di quello che si vuole raggiungere, ma se si vuole semplicemente sapere se alcune colonne sono in formato CSV, e si è sicuri che tutte le righe hanno stesse colonne, e si desidera utilizzare il lettore dict utilizzare questo

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 

Produce

found col3 True 
found col4 False 

o qualcosa di simile funzionerà anche

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

che non ha funzionato neanche. Ho modificato il mio post con i dati dei file che sto tentando di elaborare. Cercando di vedere se l'intestazione ha IP in esso. – bocca

+0

come Adam Bernier, detto problema era con gli spazi –