当有人参加比赛时,我有一个嵌套的for循环。我遇到的问题是,如果用户选择的日期不在保留的日期,我会将其推到下一个“正式”日期。我在csv文件中有一个日期列表,我读得很好。我的问题是我的嵌套循环在csv文件中不断增加其起点。
import csv, time
from datetime import date, timedelta
class RunDates():
def __init__(self):
self.enterDate = '4/12/14'
self.reader = csv.DictReader(open('dates.csv', 'rb'))
def findRunDate(self):
# Get the row of entered date or next closest
csvlist = enumerate(self.reader)
for i in range(5):
t = time.strptime(self.enterDate, '%m/%d/%y')
newdateArr = (date(t.tm_year, t.tm_mon,t.tm_mday)+timedelta(days=i)).strftime('%m/%d/%y').split('/')
newdateStr = '/'.join( [str(int(newdateArr[0])), str(int(newdateArr[1])), newdateArr[2]] )
print newdateStr, i
for num, row in csvlist:
print row['Date'], num
break
if newdateStr == row['Date']:
print 'Row Number: ' + str(num)
print 'Row Date: ' + row['Date']
print 'new Date: ' + newdateStr
break
else:
pass
#Testing
a = RunDates()
a.findRunDate()
中断是在第二个循环中,只是为了测试循环的开始位置。每当我运行此代码时,我都会得到以下信息:
4/12/14 0
4/29/16 0
4/13/14 1
4/28/16 1
4/14/14 2
4/27/16 2
4/15/14 3
4/26/16 3
4/16/14 4
4/25/16 4
因此,第一个循环包含5个日期,并且可以正确格式化它们。但是第二个继续增加它开始的行,我不确定为什么吗?
该csv
变量掩盖了csv
模块。这是一个等待发生的未来错误。
也就是说,csv
变量还是文件读取器的包装器。您无需重置它,因此它将只插入越来越多的行。
如果要在文件的开头重新启动迭代器,则可能应该将所有数据读入列表中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句