给定一个for循环内的IF-ELSE语句,我是否只能在条件满足一次时跳过IF?蟒蛇

时间:2018-06-04 03:44:49

标签: python for-loop if-statement spacy

下面是一个函数,通过添加' X'来标记句子中的动词。在动词词的末尾。这是使用spaCy进行POS标记。该函数在for循环中有一个if-else语句(见下文)。 if语句检查单词是否是要标记的动词。

但是,我希望能够在找到n个动词后跳过IF部分,然后只继续运行该函数的其余部分。我知道这可能是一个简单或愚蠢的问题,并尝试了一个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 :(得分:2)

添加一个计数器和一个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)

进行调用