我在 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 行,而不必每次都从第一行开始。文件很大,每次都从第一行开始浪费时间。
谢谢。
最佳答案
next
是一个函数,而不是控制流语句。使用 continue
而不是得到你想要的行为。您还需要增加 if
阻止自 continue
将跳过 for
的其余部分循环迭代。
if counter == 0:
counter += 1
continue
或者,一种更简洁的方法(假设您不需要 counter
)是使用 next
在进入 for
之前跳过第一行环形。这也证明了 next
的正确用法。在此示例中,我忽略了 next(csv_f)
的返回值但值得注意的是,它将包含 CSV header ,以防您想在循环行之前对其执行某些操作。
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
关于python-2.7 - 使用 Python 循环 csv 文件的指定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32981248/