2016-12-03 40 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']