2015-10-06 95 views
0

csv文件中指定的行我使用的是包CSV在Python 2.7遍歷使用Python

import csv  
f=open('Path\Top.csv') 


csv_f = csv.reader(f) 
counter = 0 
for row in csv_f: 
    if counter ==0 : 
     next 
    # Do some more stuff 
    counter += 1 

第一行包含標題,我不希望把它列入循環。我正在嘗試上述方案,以省略分析的第一行。

有沒有完成相同的優雅方式,上述方案不起作用。

另外,如何從第i行迭代到第j行,而不必每次都從第一行開始。文件很大,每次都從第一行開始浪費時間。

謝謝。

回答

0

next是一個函數,而不是控制流語句。改用continue來獲得你想要的行爲。您還需要在if塊中增加,因爲continue將跳過for循環迭代的其餘部分。

if counter == 0: 
    counter += 1 
    continue 

另外,一個更簡潔的方法(假設你不需要counter)是使用next跳過第一行你到for循環之前。這也說明next的正確用法。在這個例子中,我忽略了next(csv_f)的返回值,但值得注意的是,它將包含CSV頭,以防在循環遍歷行之前對此做某些處理。

csv_f = csv.reader(f) 
next(csv_f) # Skip header 
for row in csv_f: 
    # Do some more stuff 
    print row 

如果你確實需要counter,做事情的更Python的方法是使用內置enumerate功能。

csv_f = csv.reader(f) 
for counter, row in enumerate(csv_f): 
    if counter == 0: 
     continue 
    # Do some more stuff 
    print row 
+0

感謝您的繼續和下一個信息。有沒有什麼辦法可以迭代自定義的行號,從第i行到第j行,除了從第一行開始每一次? –

+0

@perpetual_wheel看看'itertools.islice'(https://docs.python.org/2/library/itertools.html#itertools.islice)。這將允許您迭代指定的開始和停止時間間隔。 –