[英]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.