python - для с оператором if - PullRequest
1 голос
/ 28 июля 2010

Я не понимаю, почему, когда я запускаю свой код, для каждого цикла в операторе if не выполняется.Даже если число найденных больше 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)  

Любая помощь будет признательна, я уже час бьюсь об этом.

Ответы [ 2 ]

8 голосов
/ 28 июля 2010

Ваша функция 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.

1 голос
/ 28 июля 2010

Проверьте форматирование вашего кода, похоже, что у вас есть двойная вкладка вместо одной вкладки, помните, что Python очень требователен к отступам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...