2017-01-10 24 views
8

Khi đọc một CSV, thay vì bỏ qua dòng đầu tiên (tiêu đề), và đọc mục hàng theo số:đọc mục có tên cột CSV

with open('info.csv') as f: 
    reader = csv.reader(f, delimiter=';') 
    next(reader, None) 
    for row in reader: 
     name = row[0] 
     blah = row[1] 

là có một cách tích hợp để truy cập vào mục hàng bằng cách làm sử dụng tên tiêu đề? Một cái gì đó như:

with open('info.csv') as f: 
    reader = csv.reader(f, delimiter=';', useheader=True) 
    for row in reader: 
     name = row['name'] 
     blah = row['blah'] 

nơi info.csv có một dòng tiêu đề:

tên; blah
John; Hello2
Mike; Hello2

Trả lời

8

Bạn đang tìm kiếm DictReader

with open('info.csv') as f: 
    reader = csv.DictReader(f, delimiter=';') 
    for row in reader: 
     name = row['name'] 
     blah = row['blah'] 

trích dẫn từ liên kết:

Tạo một đối tượng mà hoạt động như một độc giả thường xuyên nhưng các bản đồ thông tin đọc vào một dict có phím được cung cấp theo tham số tên trường tùy chọn. ... Nếu tham số tên trường bị bỏ qua, các giá trị trong hàng đầu tiên của csvfile sẽ được sử dụng làm tên trường.

3

Vâng, có. Đó là chức năng của hàm csv.DictReader - cung cấp các hàng như là một biến lặp của các dấu gạch ngang.

4

Bạn có thể sử dụng trường hợp csv.DictReader để nhận hành vi này.

Ví dụ từ tài liệu:

>>> with open('names.csv') as csvfile: 
...  reader = csv.DictReader(csvfile) 
...  for row in reader: 
...   print(row['first_name'], row['last_name']) 
... 
Eric Idle 
John Cleese 
Các vấn đề liên quan