2015-10-09 83 views
0

之間的所有連續的字母的單詞,我有以下字符串:如何獲得長度a和b

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

您可以使用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
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 
相關問題