我想转到每个excel文件,并在该特定表格中找到文本" Sen的斜率:"并打破循环以找到行和列,然后打印该文本旁边的值。
任何人都可以帮我解决这个代码中我错的地方。 任何帮助表示赞赏。
import os
from xlrd import open_workbook
excelfiles=[]
for i in os.listdir(os.getcwd()):
if '.xlsm' in i:
excelfiles.append(i)
cannotfiles=[]
slope=[]
for f in excelfiles:
print f
wb = open_workbook(f)
sheet = wb.sheet_by_name('Mann-Kendall trend tests')
j=0
for j in range(0,50):
i=0
for i in range(0,50):
print sheet.cell(i,j).value
if sheet.cell(i,j).value == "Sen's slope:":
break
print sheet.cell(i,j+1).value
由于
答案 0 :(得分:2)
您指定了break以仅退出内部for循环 尝试下面的代码:
for j in range(0, 50):
for i in range(0, 50):
if "something":
break
else:
continue
break
答案 1 :(得分:2)
您可以在此处放置两个if
语句,一个用于打破内部循环,第二个用于打破外部循环:
for j in range(50):
for i in range(50):
print (sheet.cell(i,j).value)
if sheet.cell(i,j).value == "Sen's slope:": break
if sheet.cell(i,j).value == "Sen's slope:": break
当你打破内部循环时,j
的值将与最后一次迭代的值相同,然后控制流将转到最后一行,即内部{{1}之后的行} loop并将评估第二个for
语句以打破外部循环。
答案 2 :(得分:0)
我猜你的问题是for
中有一个for
,而且只有内部for
突破了。您可以在一个for循环中移动打印功能,这也可以让您检测到多次出现的“Sen's斜率:”。或者,this answer有很多方法可以突破两个循环。