2016-12-03 7 views
1

私はテキストを持っているとRolling or sliding window iterator in Pythonからのコードを使用して、その上にスライディングウィンドウを通過したいと私はテキストにスペースを持っているので、代わりにn個の== 4あれば、それが現在どのように動作するかの、Pythonでスペースを含むテキストのウィンドウをスライドさせますか?

input = 'Hello my name is Steven' 

output = ['hell','ello','llo ','lo m','o my',' my ','my n',...] 

私が欲しいですそれは基本的にスペースを無視するので、出力は次のようになります。

output = ['hell','ello','my','name','is','Stev','teve','even'] 

どうすればいいですか?

答えて

0

若干の修正()(ウィンドウ内であれば追加)ポストで受け入れ答えのあなたが言及した後、各項目に関数を適用することは、あなたが欲しいものを生成することができます。

実施例では、コードhere

from itertools import islice 

def window(seq, n=4): 
    if len(seq)<n: 
     yield seq 
    "Returns a sliding window (of width n) over data from the iterable" 
    " s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...     " 
    it = iter(seq) 
    result = tuple(islice(it, n)) 
    if len(result) == n: 
     yield result  
    for elem in it: 
     result = result[1:] + (elem,) 
     yield result 

result = [] 
input = 'Hello my name is Steven' 
for item in input.split(): 
    result.extend(list(window(item))) 

result = map(lambda x: ''.join(x), result) 
print result 
+0

を見ることができ、これは素晴らしいです、ありがとうございます! – hsifyllej

0

上記の出力をフィルタリングして、目的の出力を減らすことができます。

print [i.strip(' ') for i in output if not i.strip(' ').count(' ')] 

出力:

['hell','ello','my','name','is','Stev','teve','even'] 
関連する問題