如何获得长度a和b之间的所有连续字母单词

时间:2015-10-09 23:52:39

标签: python

我有以下字符串:

s = 'HELLOPEOPLE'

我如何在长度a和b之间的上一个单词中用连续字母组成所有单词?例如:

get_words('HELLOPEOPLE', min=2, max=3)
==> he, el, ll, lo, op, pe, eo, pl, le, hel, ell, llo, lop, peo, epl, ple

最初我想过使用chain.product,但这并不遵守字母顺序(据我所知)。

2 个答案:

答案 0 :(得分:2)

您可以使用itertools将不同长度的子字符串链接在一起:

>>> from itertools import chain
>>> s = 'HELLOPEOPLE'
>>> min, max = 2, 3
>>> list(chain.from_iterable((s[i:i+k] for i in range(len(s)+1-k))
...                          for k in range(min, max+1)))
['HE', 'EL', 'LL', 'LO', 'OP', 'PE', 'EO', 'OP', 'PL', 'LE',
 'HEL', 'ELL', 'LLO', 'LOP', 'OPE', 'PEO', 'EOP', 'OPL', 'PLE']

答案 1 :(得分:1)

def get_words(a, min, max):
    lst = []
    for length in range(min, max + 1):
        for i in range(0, len(a) - length + 1):
            lst.append(a[i:i+length].lower())
    return lst