我在Jupyter-notebook上运行下面的python代码时遇到问题。 当我迭代一次时没关系,但是如果我将代码更改为迭代两次,我会得到错误,为什么会这样?
import csv
csvfile = open("sales_rank.csv")
reader=csv.reader(csvfile)
header=next(reader)
category={}
rank={}
for row in reader:
category.setdefault(row[1],[]).append(row[4])
for each in reader:
rank.setdefault(row[3],[]).append(row[0])
答案 0 :(得分:1)
第二次执行for <variable> in reader:
时,csvfile
已经在文件的末尾,因此没有什么可读的。你需要回到文件的开头。
import csv
csvfile = open("sales_rank.csv")
reader=csv.reader(csvfile)
header=next(reader)
category={}
rank={}
for row in reader:
category.setdefault(row[1],[]).append(row[4])
csvfile.seek(0)
for each in reader:
rank.setdefault(row[3],[]).append(row[0])
答案 1 :(得分:0)
reader
是一个迭代器,你的第一个for循环运行直到迭代器完成。所以当你进入第二个循环时,没有什么可以迭代的。在循环之间,您需要重置迭代器。您可以尝试reader.seek(0)
重置其位置,我不确定这是否适用于csv.reader
。如果这不起作用,您只需再次调用reader = csv.reader(csvfile)
即可重置。