Учитывая оператор IF-ELSE внутри цикла for, могу ли я пропустить IF, только если условие выполнено один раз?питон - PullRequest
0 голосов
/ 04 июня 2018

Ниже приведена функция, которая помечает глаголы в предложениях, добавляя «X» в конце слова глагола.Это делается с помощью spaCy для POS-тегов.Функция имеет оператор if-else внутри цикла for (см. Ниже).Оператор if проверяет, является ли слово глаголом, который нужно пометить, или нет.

Тем не менее, я хочу иметь возможность пропустить часть IF после того, как найдено n количество глаголов, и только затемпродолжить работу с остальной частью функции.Я знаю, что это может быть простой или глупый вопрос, и попробовал цикл while и continue, но не смог заставить это работать.Есть ли способ добиться этого?

def marking(row):
    chunks = []
    for token in nlp(row):
        if token.tag_ == 'VB': 
        # I would like to specify the n number of VB's to be found
        # once this is met, only run the else part
            chunks.append(token.text + 'X' + token.whitespace_)
        else:
            chunks.append(token.text_with_ws)
    L = "".join(chunks)
    return L

1 Ответ

0 голосов
/ 04 июня 2018

Добавьте счетчик и break

def marking(row, max_verbs=5):
    chunks = []
    verbs = 0
    for token in nlp(row):
        if token.tag_ == 'VB':
            if verbs >= max_verbs:
                break  # Don't add anymore, end the loop
            chunks.append(token.text + 'X' + token.whitespace_)
            verbs += 1
        else:
            chunks.append(token.text_with_ws)
    return "".join(chunks)

Позвоните по marking(row, max_verbs=N)

...