我在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行开始浪费时间。
感谢。
答案 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