Python 为什么在While语句末尾的incrementor没有启动
我想在while循环中嵌套for语句。但是,在下面的示例中,变量d在for语句完成后不会增加一天。我通过在屏幕上打印d来确定这一点Python 为什么在While语句末尾的incrementor没有启动,python,Python,我想在while循环中嵌套for语句。但是,在下面的示例中,变量d在for语句完成后不会增加一天。我通过在屏幕上打印d来确定这一点 while d <= end: for row in reader: rowDate = datetime.datetime.strptime(row[0], "%m/%d/%Y") if row[1] == offer and rowDate == d: rowList.append("1")
while d <= end:
for row in reader:
rowDate = datetime.datetime.strptime(row[0], "%m/%d/%Y")
if row[1] == offer and rowDate == d:
rowList.append("1")
d += datetime.timedelta(days=1)
而dcsv.reader
返回一个生成器。一旦你翻过它,它就被消耗掉了。如果不重新实例化它,就不能迭代它两次。那是因为一般来说,你不需要重复一遍。您可以像这样重写代码:
for row in reader:
rowDate = datetime.datetime.strptime(row[0], "%m/%d/%Y")
if row[1] == offer and start_date<=rowDate<=end_date:
# start_date and end_date are datetime objects
rowList.append("1")
读取器中的行的:
rowDate=datetime.datetime.StrTime(第[0]行,%m/%d/%Y”)
如果行[1]==offer和start\u date如果while循环只运行一次,则表明d==end
…读卡器是否有行?rowList和rowDate如何看待每一个的结尾?在增量之后打印(在循环中)。你看到了什么?:)@Interrobang I验证了d的起始值小于结束值如果读取器
是一个csv.reader
或类似的读取器,您只能对其迭代一次。您需要在while
循环中的每次迭代中重新实例化它。
for row in reader:
rowDate = datetime.datetime.strptime(row[0], "%m/%d/%Y")
if row[1] == offer and start_date<=rowDate<=end_date:
# start_date and end_date are datetime objects
rowList.append("1")