from itertools import islice
line="abcd\nefg"
def window(seq, n=2):
"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
for chunk in window(line, 2):
print(chunk, ''.join(chunk))
for chunk in window(line, 3):
print(chunk, ''.join(chunk))
from itertools import islice
La sortie :
('a', 'b') ab
('b', 'c') bc
('c', 'd') cd
('d', '\n') d
('\n', 'e')
e
('e', 'f') ef
('f', 'g') fg
('a', 'b', 'c') abc
('b', 'c', 'd') bcd
('c', 'd', '\n') cd
('d', '\n', 'e') d
e
('\n', 'e', 'f')
ef
('e', 'f', 'g') efg
[^] # Re: On dirait du C
Posté par copapa . En réponse au journal Analyse de texte. Évalué à 4. Dernière modification le 15 décembre 2015 à 21:05.
Piqué sur http://stackoverflow.com/questions/6822725/rolling-or-sliding-window-iterator-in-python
La sortie :