2009-04-17 4 views
7

Ho iniziato a utilizzare csv.reader in Python 2.6 ma non è possibile utilizzare len su di esso o affettare, ecc. Qual è la ragione di questo? Sicuramente sembra molto limitante.Perché csv.reader non è pythonic?

Oppure è solo un modulo abbandonato nelle versioni successive?

risposta

14

Sono abbastanza sicuro che non è possibile utilizzare len o slice perché è un iteratore. Prova questo invece.

import csv 
r = csv.reader(...) 
lines = [line for line in r] 
print len(lines) #number of lines 
for odd in lines[1::2]: print odd # print odd lines 
+0

Grazie, non sapevo che fosse un iteratore. Pensavo fosse una lista multidimensionale. –

+1

È possibile sostituire le linee = [linea per riga in r] con righe = elenco (r) – saffsd

+1

È possibile utilizzare 'itertools.islice' se è necessario dividere un iteratore. –