Skip to main content
 首页 » 编程设计

python -- 用于带有 if 语句

2025年05月04日10txw1958

我不明白为什么,当我运行我的代码时,if 语句下的 for each 循环没有运行。即使找到的数量大于 0!

def findpattern(commit_msg): 
    pattern = re.compile("\w\w*-\d\d*") 
    group = pattern.finditer(commit_msg) 
    found = getIterLength(group) 
    print found 
    if found > 0: 
        issues = 0 
        for match in group: 
                print " print matched issues:" 
                auth = soap.login(jirauser,passwd) 
 
                print match.group(0) 
                getIssue(auth,match.group(0)) 
                issues = issues + 1 
    else:  
        sys.exit("No issue patterns found.") 
 
print "Retrieved issues: " + str(issues)   

任何帮助将不胜感激,我已经为此苦苦思索了一个小时。

请您参考如下方法:

您的 getIterLength() 函数正在通过耗尽 finditer() 返回的迭代器来查找长度。然后,您将需要一个新的迭代器实例用于 for 循环。相反,我会像这样重组您的代码:

def findpattern(commit_msg): 
    pattern = re.compile("\w\w*-\d\d*") 
    group = pattern.finditer(commit_msg) 
 
    found = 0 
    issues = 0 
    for match in group: 
        print " print matched issues:" 
        auth = soap.login(jirauser,passwd) 
 
        print match.group(0) 
        getIssue(auth,match.group(0)) 
        issues = issues + 1 
        found += 1 
    if found == 0: 
        sys.exit("No issue patterns found.") 
 
 
    print "Retrieved issues: " + str(issues)   

或者,您可以使用 findall() 方法而不是 finditer() 来为您提供一个列表(它是一个可迭代的,而不是迭代器),您可以在其中可以运行 len(group) 来获取大小,然后使用它在您的 for 循环中迭代。