以下是我用来操作CSV文件的代码。它没有进入第二和第三循环。
import csv
f=open("/Users/shivendraagrawal/Desktop/Training Dataset.csv","rU")
cr = csv.reader(f)
mapping={}
out={}
i=0
for row in cr:
i=i+1
mapping[row[0]]=0
out[row[0]]=0
for row in cr:
print "hi"
mapping[row[0]]=mapping[row[0]]+row[5]
if row[6]=="TRUE":
out[row[0]]=out[row[0]]+1
for row in cr:
print mapping[row[0]] +' '+out[row[0]]
print i
答案 0 :(得分:2)
你不止一次使用迭代器,但迭代器只是一次性的。
阅读时只需复制cr
内容,然后重复:
cr_copy = [c for c in cr]
for row in cr_copy:
或者,有更多的Pythonic方法:你可以使用itertools.tee(see this post)克隆迭代器三次:
import itertools
cr1, cr2 = itertools.tee(cr)
for row in cr1:
# first loop
for row in cr2:
# secondloop
答案 1 :(得分:1)
使用f.seek(0)
在第一次和第二次循环后回退,例如在第二次循环之前:
f.seek(0)
for row in cr:
# loop code
试一试!!