2009-11-17 4 views
17

Tôi có một bộ tiêu đề csv mà tôi đang cố gắng khớp với video tải lên. Nó không thực sự hiệu quả. Không phải tất cả các tiêu đề đều được yêu cầu - tôi chỉ phải khớp với nội dung trong tệp.tiêu đề python 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" 

Trong trường hợp này, không tìm thấy IP.

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

Không tìm thấy lại. Tôi đã tìm kiếm trên trang web này - đã có:

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

Điều đó không có tác dụng.

Đây là tập Tôi đang sử dụng để thử nghiệm:

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 

Trả lời

11

Dựa trên chỉnh sửa của bạn, bạn cần phải skip the initial space sau dấu phẩy.

này nên làm điều đó:

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

Tôi không chắc chắn chính xác những gì bạn muốn đạt được nhưng nếu bạn chỉ đơn giản muốn biết nếu một số cột là trong CSV, và bạn chắc chắn rằng tất cả các hàng có cột giống nhau, và bạn muốn sử dụng đầu đọc dict sử dụng này

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 

Nó ra

found col3 True 
found col4 False 

hoặc một cái gì đó như thế này cũng sẽ hoạt động quá

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

điều đó không làm việc, hoặc. Tôi đã chỉnh sửa bài đăng của mình bằng dữ liệu tệp mà tôi đang cố gắng xử lý. Đang cố gắng xem tiêu đề có IP trong đó hay không. – bocca

+0

như Adam Bernier, cho biết vấn đề là với không gian –