文字列はimmutableなので、昔は def insert(pos, s, x): return x.join([s[:pos], s[pos:] ]) とかやってましたけど、Python 2.6あたりからbytearrayが入ったので、頻繁にinsert操作するならこちらがお奨めです。 ただ、ちょっと気をつけないといけないのは... import uuid s = bytearray('%012X' % uuid.getnode()) print s for i in xrange(len(s)-2, 0, -2): s.insert(i, ':') print s 0123456789AB 01:23:45:67:89:AB 末尾の方からinsertしていかないと位置がずれるってことですね。