2009-11-17 20 views
17

Mam zestaw nagłówków CSV, które próbuję dopasować do przesłanych. To naprawdę nie działa. Nie wszystkie nagłówki są wymagane - muszę tylko dopasować zawartość pliku.Python CSV nagłówki

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" 

W tym przypadku nie znaleziono adresu IP.

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

Nie znaleziono go ponownie. Poszukałem na tej stronie - było:

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

To też nie działa.

Jest to plik używam do testowania:

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 

Odpowiedz

11

podstawie swojej zmiany, trzeba skip the initial space po przecinku.

ten powinien zrobić:

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

nie jestem do końca pewien, co chcesz osiągnąć, ale jeśli po prostu chcesz wiedzieć, czy niektóre kolumny w pliku CSV, a na pewno że wszystkie wiersze mają te same kolumny, a chcesz używać używać czytnika DICT to

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 

wyprowadza ona

found col3 True 
found col4 False 

lub coś jak to będzie działać zbyt

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

że nie działało. Edytowałem swój wpis z danymi pliku, które próbuję przetworzyć. Próbuję sprawdzić, czy nagłówek ma adres IP. – bocca

+0

jako Adam Bernier, powiedział problem był ze spacjami –