[英]Sliding window on text with spaces in python?
我有一个文本,并希望使用Rolling中的代码或在Python中滑动窗口迭代器传递一个滑动窗口,我在文本中有空格,所以如果n == 4,它不是当前的工作方式,
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']
我该怎么做呢?
您可以过滤上述输出并减少所需的输出。
print [i.strip(' ') for i in output if not i.strip(' ').count(' ')]
输出:
['hell','ello','my','name','is','Stev','teve','even']
稍微修改(如果在窗口()中添加)您提到的帖子中接受的答案,然后在每个项目中应用该功能可以产生您想要的。
这里可以看到带有工作示例的代码
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.