如何在Python中创建随机字符串?
我需要它是数字然后字符重复,直到你完成这是我创建的
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
Run Code Online (Sandbox Code Playgroud)
sth*_*sth 211
从(例如)小写字符生成字符串:
import random, string
def randomword(length):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))
Run Code Online (Sandbox Code Playgroud)
结果:
>>> randomword(10)
'vxnxikmhdc'
>>> randomword(10)
'ytqhdohksy'
Run Code Online (Sandbox Code Playgroud)
Bra*_*don 53
由于这个问题是公平的,呃,随机,这可能适合你:
>>> import uuid
>>> print uuid.uuid4()
58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 31
>>> import random
>>> import string
>>> s=string.lowercase+string.digits
>>> ''.join(random.sample(s,10))
'jw72qidagk
Run Code Online (Sandbox Code Playgroud)
Tom*_*Tom 15
回答原始问题:
os.urandom(n)
Run Code Online (Sandbox Code Playgroud)
引自:http://docs.python.org/2/library/os.html
返回一串适合加密使用的n个随机字节.
此函数从特定于OS的随机源返回随机字节.对于加密应用程序,返回的数据应该是不可预测的,尽管其确切的质量取决于操作系统的实现.在类UNIX系统上,这将查询/ dev/urandom,在Windows上,它将使用CryptGenRandom.如果未找到随机源,将引发NotImplementedError.
有关易于使用的平台提供的随机数生成器的界面,请参阅random.SystemRandom.
有时,我想要一些半可发音、半可记忆的随机字符串。
import random
def randomWord(length=5):
consonants = "bcdfghjklmnpqrstvwxyz"
vowels = "aeiou"
return "".join(random.choice((consonants, vowels)[i%2]) for i in range(length))
Run Code Online (Sandbox Code Playgroud)
然后,
>>> randomWord()
nibit
>>> randomWord()
piber
>>> randomWord(10)
rubirikiro
Run Code Online (Sandbox Code Playgroud)
为了避免出现 4 个字母的单词,请勿设置length
为 4。
吉姆
您python3.6+
可以使用该secrets
模块:
Secrets 模块用于生成适用于管理密码、帐户身份验证、安全令牌和相关机密等数据的加密强随机数。
特别是,应优先使用秘密,而不是随机模块中的默认伪随机数生成器,该生成器是为建模和模拟而不是安全或密码学而设计的。
在测试768bit
安全令牌的生成时,我发现:
random.choices()
-0.000246
秒secrets.choice()
-0.003529
秒这些secrets
模块速度较慢,但在测试之外,您应该将其用于加密目的:
import string, secrets
def random_string(size):
letters = string.ascii_lowercase+string.ascii_uppercase+string.digits
return ''.join(secrets.choice(letters) for i in range(size))
print(random_string(768))
Run Code Online (Sandbox Code Playgroud)
您可以构建随机的ascii字符,如:
import random
print chr(random.randint(0,255))
Run Code Online (Sandbox Code Playgroud)
然后建立一个更长的字符串,如:
len = 50
print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )
Run Code Online (Sandbox Code Playgroud)
你还没有真正说过你需要什么样的随机字符串.但无论如何,你应该研究一下这个random
模块.
下面粘贴了一个非常简单的解决方案.
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)
Run Code Online (Sandbox Code Playgroud)