使用Python循环遍历csv文件的指定行

时间:2015-10-06 23:10:31

标签: python-2.7 csv

我在python 2.7中使用包csv

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行而不必每次都从第一行开始。文件很大,每次都从第1行开始浪费时间。

感谢。

1 个答案:

答案 0 :(得分: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,更多Pythonic的做事方式是使用内置的enumerate功能。

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