2013-09-30 39 views
6

Oto mój kod do tej pory:TypeError: Obiekt '_csv.reader' nie ma atrybutu "__getitem__"?

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

Oto mój new_file.txt:

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

gdy uruchomię go mam następujący błąd:

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__' 

Jak mogę to naprawić ?

Dzięki.

Odpowiedz

16

Obiekt jest , a nie sekwencja. Nie można uzyskać dostępu do wierszy według indeksu.

Musiałbyś „slurp” cały iterowalny w wykazie, że:

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

to generalnie nie jest dobrym pomysłem. Można zamiast prosić o następnej wartości z iteracyjnej z next() function:

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

Można pętlę reader a następnie przejść do row elementy:

import csv 
reader = csv.reader(open('new_file.txt','r'),delimiter=' ') 
for row in reader: 
    row1 = row[0] 
    row2 = row[1] 
    row3 = row[3] 
Powiązane problemy