Ответ 1
На основе вашего редактирования вам нужно пропустить начальное пространство после запятой.
Это должно сделать это:
>>> reader = csv.DictReader(open(PathFile),skipinitialspace=True)
У меня есть набор заголовков csv, которые я пытаюсь сопоставить с загрузками. Это не работает. Не все заголовки требуются - мне просто нужно сопоставить то, что в файле.
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"
В этом случае IP не найден.
for row in reader:
if row.get('IP'):
print "IP found in Row"
Он снова не найден. Я искал на этом сайте - было:
IP = row.get('IP', None)
Это тоже не сработало.
Это файл, который я использую для тестирования:
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
На основе вашего редактирования вам нужно пропустить начальное пространство после запятой.
Это должно сделать это:
>>> reader = csv.DictReader(open(PathFile),skipinitialspace=True)
Я не совсем уверен, чего вы хотите достичь, но если вы просто хотите знать, есть ли в CSV столбцы, и вы уверены, что все строки имеют одинаковые столбцы, и вы хотите использовать диктофон, используйте этот
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
Он выводит
found col3 True
found col4 False
или что-то вроде этого тоже будет работать
reader = csv.reader(s.split("\n"))
columns = reader.next()
for colName in ['col3', 'col4']:
print "found %s %s"%(colName, colName in columns)