检查字符串是否连续包含三个单词

时间:2018-07-02 13:10:29

标签: python string python-3.x

我给了一个字符串,单词和数字之间用空格(一个空格)隔开。单词仅包含字母。我应该检查字符串是否连续包含三个单词 。例如,字符串"start 5 one two three 7 end"连续包含三个单词,因此它应返回True

示例:

checkio("Hello World hello") == True
checkio("He is 123 man") == False
checkio("1 2 3 4") == False
checkio("bla bla bla bla") == True
checkio("Hi") == False

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

这是将zipitertools.islice结合使用的一种解决方案:

from itertools import islice

def checkio(x):
    split = x.split()
    for values in zip(split, islice(split, 1, None), islice(split, 2, None)):
        if all(i.isalpha() for i in values):
            return True
    return False

checkio("Hello World 3 hello 2 hello")  # False
checkio("Hello 3 World hello hello")    # True

更有效地,您可以使用itertools.groupby

from itertools import groupby

def checkio(x):
    for _, j in groupby(x.split(), key=str.isalpha):
        if sum(1 for el in j) == 3:
            return True
    return False

checkio("Hello World 3 hello 2 hello")  # False
checkio("Hello 3 World hello hello")    # True

答案 1 :(得分:1)

您可以为此使用正则表达式。

import re
bool(re.search(r'\b[a-z]+\s+[a-z]+\s+[a-z]+\b', 'test test 1 test', re.IGNORECASE))