2015-10-06 99 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)。这将允许您迭代指定的开始和停止时间间隔。 –