On Feb 15, 10:09 am, Wojciech Muła <wojciech_m...@poczta.null.onet.pl.invalid> wrote: > import re > > s = 'xxaabbddee' > m = re.compile("(..)") > s1 = m.sub("\\1:", s)[:-1]
One can modify this slightly: s = 'xxaabbddee' m = re.compile('..') s1 = ':'.join(m.findall(s)) Depending on one's taste this could be clearer. The more general answer, from the itertools docs: from itertools import izip_longest def grouper(n, iterable, fillvalue=None): "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx" args = [iter(iterable)] * n return izip_longest(fillvalue=fillvalue, *args) s2 = ':'.join(''.join(pair) for pair in grouper(2, s, '')) Note that this behaves differently to the previous solutions, for sequences with an odd length. -- http://mail.python.org/mailman/listinfo/python-list