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'] >>>
请享用。 ;)