import string import random the following logic still generates 6 character random sample >>> print ''.join(random.sample((string.ascii_uppercase+string.digits),6)) JT7K3Q No need to multiply by 6 >>> print ''.join(random.sample((string.ascii_uppercase+string.digits)*6,6)) TK82HK