如何在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
答案 0 :(得分:209)
从(例如)小写字符生成字符串:
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'
答案 1 :(得分:49)
由于这个问题是公平的,呃,随机,这可能适合你:
>>> import uuid
>>> print uuid.uuid4()
58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
答案 2 :(得分:31)
>>> import random
>>> import string
>>> s=string.lowercase+string.digits
>>> ''.join(random.sample(s,10))
'jw72qidagk
答案 3 :(得分:15)
回答原来的问题:
os.urandom(n)
引自:http://docs.python.org/2/library/os.html
返回一串适合加密使用的n个随机字节。
此函数从特定于OS的随机性返回随机字节 资源。返回的数据应该是不可预测的 加密应用程序,虽然它的确切质量取决于操作系统 实现。在类UNIX系统上,这将查询/ dev / urandom, 在Windows上,它将使用CryptGenRandom。如果是随机源 未找到,将引发NotImplementedError。
为所提供的随机数生成器提供易于使用的界面 通过您的平台,请参阅random.SystemRandom。
答案 4 :(得分:5)
您可以构建随机的ascii字符,如:
import random
print chr(random.randint(0,255))
然后建立一个更长的字符串,如:
len = 50
print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )
答案 5 :(得分:5)
你还没有真正说过你需要什么样的随机字符串。但无论如何,您应该查看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)
答案 6 :(得分:2)
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']
>>>
享受。 ;)
答案 7 :(得分:1)
有时候,我想要的是半发音,半记忆的随机字符串。
import random
def randomWord(length=5):
consonants="bcdfghjklmnpqrstvwxyz"
vowels="aeiou"
return "".join(random.choice((consonants,vowels)[i%2]) for i in range(length))
然后
>>> randomWord()
nibit
>>> randomWord()
piber
>>> randomWord(10)
rubirikiro
为避免使用4个字母的单词,请不要将length
设置为4。
吉姆
答案 8 :(得分:1)
在python3.6+
中,您可以使用secrets
module:
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))
答案 9 :(得分:0)
安装此软件包:
pip3 install py_essentials
并使用此代码:
from py_essentials import simpleRandom as sr
print(sr.randomString(4))
More informations about the method other parameters are available here.
答案 10 :(得分:0)
此函数生成随机字符串,包括大写,小写字母,数字,传递长度分隔符,no_of_blocks以指定字符串格式
例如:len_sep = 4,no_of_blocks = 4将生成以下模式,
F4nQ-Vh5z-JKEC-WhuS
其中,长度分隔符将在4个字符后添加“ - ”
<强> XXXX - 强>
没有块会生成以下字符串作为字符串
XXXX - XXXX - XXXX - XXXX
如果需要单个随机字符串,只需将no_of_blocks变量保持为1,并使用len_sep指定随机字符串的长度。
例如:len_sep = 10,no_of_blocks = 1,将生成以下模式,即。随机字符串长度10 ,
<强> F01xgCdoDU 强>
import random as r
def generate_random_string(len_sep, no_of_blocks):
random_string = ''
random_str_seq = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in range(0,len_sep*no_of_blocks):
if i % len_sep == 0 and i != 0:
random_string += '-'
random_string += str(random_str_seq[r.randint(0, len(random_str_seq) - 1)])
return random_string
答案 11 :(得分:0)
import random
import string
def get_random_string(size):
chars = string.ascii_lowercase+string.ascii_uppercase+string.digits
''.join(random.choice(chars) for _ in range(size))
print(get_random_string(20)
输出:FfxjmkyyLG5HvLeRudDS
答案 12 :(得分:-1)
尝试导入以下软件包 来自随机导入*