Using the orgar idiom zip(*[iter(s)]*n) :
In [32]: addr = '00163e2fbab7'
In [33]: ':'.join(''.join(pair) for pair in zip(*[iter(addr)]*2))
Out[33]: '00:16:3e:2f:ba:b7'
It is also possible (and essentially a little faster):
In [36]: ':'.join(addr[i:i+2] for i in range(0,len(addr),2))
Out[36]: '00:16:3e:2f:ba:b7'
source
share