You can use the recipe grouper , zip(*[iter(s)]*4) :
In [113]: s = 'aaaaaaaaaaaaaaaaaaaaaaa' In [114]: [''.join(item) for item in zip(*[iter(s)]*4)] Out[114]: ['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa']
Note that textwrap.wrap cannot split s into lines of length 4 if the line contains spaces:
In [43]: textwrap.wrap('I am a hat', 4) Out[43]: ['I am', 'a', 'hat']
The grouper recipe is faster than using textwrap :
In [115]: import textwrap In [116]: %timeit [''.join(item) for item in zip(*[iter(s)]*4)] 100000 loops, best of 3: 2.41 ยตs per loop In [117]: %timeit textwrap.wrap(s, 4) 10000 loops, best of 3: 32.5 ยตs per loop
And the grouper recipe can work with any iterator, and textwrap only works with strings.
unutbu
source share