2013-05-03 13 views
5

W pythonie 2.7.3, jak mogę uruchomić pętlę z drugiego rzędu? na przykładpython csv reader, pętla z drugiego rzędu

first_row = cvsreader.next(); 
for row in ???: #expect to begin the loop from second row 
    blah...blah... 
+0

miałeś odpowiedź właśnie tam :-) – bernie

+0

należy przetestować najbardziej oczywistym sposobem zanim zapytasz, to jest głupie pytanie :( – GuLearn

+0

mowy jest głupi, nie przejmuj się tym – bernie

Odpowiedz

8
first_row = next(csvreader) # Compatible with Python 3.x (also 2.7) 
for row in csvreader: # begins with second row 
    # ... 

Testowanie to naprawdę działa:

>>> import csv 
>>> csvreader = csv.reader(['first,second', '2,a', '3,b']) 
>>> header = next(csvreader) 
>>> for line in csvreader: 
    print line 
['2', 'a'] 
['3', 'b'] 
+0

'.next()' został usunięty w Pythonie 3. Użyłbym 'next (csvreader)'. – Blender

+0

@Blender Thanks; zaktualizowany twoim komentarzem. –

+0

'next (csvreader)' działa dla obu wersji. – Blender

2
next(reader, None) # Don't raise exception if no line exists 

wygląda najbardziej czytelny IMO

Drugą alternatywą jest

from itertools import islice 
for row in islice(reader, 1, None) 

Nie powinieneś jednak używać nagłówka? Rozważmy csv.DictReader, który domyślnie ustawia nazwy pól do pierwszego wiersza.

+0

Dziękuję za wzmiankę o alternatywie! Nie używam nagłówka, ponieważ konkretny plik csv, z którym mam do czynienia, ma pusty nagłówek: P – GuLearn

0

Zakładając 1st wiersz zawiera nazwy pól:

import csv 
for field in csv.DictReader(open("./lists/SP500.csv", 'rb')): 
    symbol = (field['ticker']).rstrip()