我有以下代码是教程的一部分
import csv as csv
import numpy as np
csv_file_object = csv.reader(open("train.csv", 'rb'))
header = csv_file_object.next()
data = []
for row in csv_file_object:
data.append(row)
data = np.array(data)
代码按预期工作,但我不清楚为什么在具有变量 header
的文件上调用 .next()
有效。 csv_file_object 不还是整个文件吗?当 for row in csv_file_object
被调用时,程序如何知道跳过标题行,因为变量标题一旦定义就不会被引用?
最佳答案
由于调用 next()
,标题行被“跳过”。这就是迭代器的工作方式。
当你遍历一个迭代器时,它的 next()
方法每次都会被调用。每次调用都会推进迭代器。当 for
循环开始时,迭代器已经在第二行,并从那里开始。
这是 the documentation在 next()
方法 ( here's another piece ) 上。
重要的是 csv.reader
对象是迭代器,就像 open()
返回的文件对象一样。您可以遍历它们,但它们在任何给定时刻都不包含所有行(或任何行)。
关于python - 试图理解 python csv .next(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14551484/