我目前有一张excel表格检查另一张excel表格中的某些数字。一旦找到匹配的单元格,我希望它继续回到第一个for循环。如果它找不到匹配的单元格,但找到它的前6位数,我希望它将其标记为已选中,然后再次移回第一个for循环。
这是怎么做到的?
以下是我的代码。我评论了我希望它回到我做的第一个for
循环。
for row in range(sheet.nrows):
cell = str(sheet.cell_value(row, 0))
if fd.match(cell):
for rows in range(sheet.nrows):
windcell = str(windc_sheet.cell_value(rows, 0))
if fd.match(windcell):
if cell == windcell:
outputsheet.write(row, 1, ' ')
#GO BACK TO FIRST FOR LOOP
else:
sixdig = cell[0:6]
sixdigwind = windcell[0:6]
if sixdig == sixdigwind:
outputsheet.write(row, 1, 'Check')
#GO BACK TO FIRST FOR LOOP
else:
sixdig = cell[0:6]
for rows in range(sheet.nrows):
windcell = str(windc_sheet.cell_value(rows,0))
sixdigwind = windcell[0:6]
if sixdig == sixdigwind:
outputsheet.write(row, 1, 'Check')
答案 0 :(得分:2)
只需使用break
语句即可。它会让您摆脱for
循环或while
循环。
来自Python文档:
break只能在语法上嵌套在for或while循环中,但不能 嵌套在该循环中的函数或类定义中。 终止了 最近的封闭循环,如果循环有一个,则跳过可选的else子句。 如果for循环被中断终止,则循环控制目标保持其当前 值。当break通过finally子句控制出try语句时, 在终止循环之前执行finally子句。
(强调我的)
for row in range(sheet.nrows):
cell = str(sheet.cell_value(row, 0))
if fd.match(cell):
for rows in range(sheet.nrows):
windcell = str(windc_sheet.cell_value(rows, 0))
if fd.match(windcell):
if cell == windcell:
outputsheet.write(row, 1, ' ')
break # TERMINATE ENCLOSING FOR LOOP
else:
sixdig = cell[0:6]
sixdigwind = windcell[0:6]
if sixdig == sixdigwind:
outputsheet.write(row, 1, 'Check')
break # TERMINATE ENCLOSING FOR LOOP
else:
sixdig = cell[0:6]
for rows in range(sheet.nrows):
windcell = str(windc_sheet.cell_value(rows,0))
sixdigwind = windcell[0:6]
if sixdig == sixdigwind:
outputsheet.write(row, 1, 'Check')