我有以下字符串:
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
,但这并不遵守字母顺序(据我所知)。
答案 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