Python中的随机string

你如何在Python中创build一个随机string?

我需要它是数字然后字符重复,直到你完成这是我创build的

def random_id(length): number = '0123456789' alpha = 'abcdefghijklmnopqrstuvwxyz' id = '' for i in range(0,length,2): id += random.choice(number) id += random.choice(alpha) return id 

从(例如)小写字符生成string:

 import random, string def randomword(length): letters = string.ascii_lowercase return ''.join(random.choice(letters) for i in range(length)) 

结果:

 >>> randomword(10) 'vxnxikmhdc' >>> randomword(10) 'ytqhdohksy' 

由于这个问题是相当的,呃,随机的,这可能适用于你:

 >>> import uuid >>> print uuid.uuid4() 58fe9784-f60a-42bc-aa94-eb8f1a7e5c17 
 >>> import random >>> import string >>> s=string.lowercase+string.digits >>> ''.join(random.sample(s,10)) 'jw72qidagk 

回答原来的问题:

 os.urandom(n) 

引用自: http : //docs.python.org/2/library/os.html

返回适合密码使用的n个随机字节的string。

该函数从特定操作系统的随机源中返回随机字节。 返回的数据对于encryption应用程序来说应该是不可预测的,尽pipe它的确切质量取决于操作系统的实现。 在类UNIX系统上,它将查询/ dev / urandom,并在Windows上使用CryptGenRandom。 如果没有find随机源,则会引发NotImplementedError。

对于一个易于使用的平台提供的随机数发生器的接口,请参阅random.SystemRandom。

你可以build立随机的ascii字符,如:

 import random print chr(random.randint(0,255)) 

然后build立一个更长的string,如:

 len = 50 print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] ) 

你并没有真正地说过你需要什么样的随机string。 但无论如何,你应该看看random模块。

下面粘贴一个非常简单的解决scheme。

 import random def randstring(length=10): valid_letters='ABCDEFGHIJKLMNOPQRSTUVWXYZ' return ''.join((random.choice(valid_letters) for i in xrange(length))) print randstring() print randstring(20) 
 random_name = lambda length: ''.join(random.sample(string.letters, length)) 

长度必须是<= len(string.letters)= 53.结果的例子

  >>> [random_name(x) for x in range(1,20)] ['V', 'Rq', 'YtL', 'AmUF', 'loFdS', 'eNpRFy', 'iWFGtDz', 'ZTNgCvLA', 'fjUDXJvMP', 'EBrPcYKUvZ', 'GmxPKCnbfih', 'nSiNmCRktdWZ', 'VWKSsGwlBeXUr', 'i stIFGTUlZqnav', 'bqfwgBhyTJMUEzF', 'VLXlPiQnhptZyoHq', 'BXWATvwLCUcVesFfk', 'jLngHmTBtoOSsQlezV', 'JOUhklIwDBMFzrTCPub'] >>> 

请享用。 ;)