2013-09-30 19 views
6

Đây là mã của tôi cho đến nay:LoạiError: đối tượng '_csv.reader' không có thuộc tính '__getitem__'?

import csv 
reader = csv.reader(open('new_file.txt','r'),delimiter=' ') 
row1 = reader[0] 
row2 = reader[1] 
row3 = reader[2] 

Đây là tôi new_file.txt:

this is row one 
this is row two 
this is row three 

Khi tôi chạy Nó i đã được lỗi sau:

Traceback (most recent call last): 
    File "/home/me/Documents/folder/file.py", line 211, in <module> 
    row1 = reader[0] 
TypeError: '_csv.reader' object has no attribute '__getitem__' 

Làm thế nào tôi có thể khắc phục điều đó ?

Cảm ơn.

Trả lời

16

Đối tượng csv.reader()không phải một chuỗi. Bạn không thể truy cập các hàng theo chỉ mục.

Bạn sẽ phải 'Slurp' toàn bộ iterable vào một danh sách cho rằng:

rows = list(reader) 
row1 = rows[0] 
row2 = rows[1] 
row3 = rows[2] 

này thường không phải là một ý tưởng tốt. Bạn có thể yêu cầu thay cho giá trị kế tiếp từ iterator với next() function:

reader = csv.reader(open('new_file.txt','r'),delimiter=' ') 
row1 = next(reader) 
row2 = next(reader) 
row3 = next(reader) 
2

Bạn có thể lặp các reader và sau đó truy cập vào row yếu tố:

import csv 
reader = csv.reader(open('new_file.txt','r'),delimiter=' ') 
for row in reader: 
    row1 = row[0] 
    row2 = row[1] 
    row3 = row[3] 
Các vấn đề liên quan