使用python浏览excel表时循环不会中断

时间:2016-04-26 10:20:39

标签: python

我想转到每个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

由于

3 个答案:

答案 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有很多方法可以突破两个循环。