问题:Python中的随机字符串
如何在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
从(例如)小写字符生成字符串:
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
由于这个问题是相当随机的,所以这可能对您有用:
>>> import uuid
>>> print uuid.uuid4()
58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
回答 2
>>> import random
>>> import string
>>> s=string.lowercase+string.digits
>>> ''.join(random.sample(s,10))
'jw72qidagk
回答 3
回答原始问题:
os.urandom(n)
引用自:http : //docs.python.org/2/library/os.html
返回适合加密用途的n个随机字节的字符串。
该函数从特定于操作系统的随机性源返回随机字节。尽管返回的数据的确切质量取决于操作系统的实现,但是对于加密应用程序而言,返回的数据应该足够不可预测。在类似UNIX的系统上,它将查询/ dev / urandom,在Windows上,它将使用CryptGenRandom。如果找不到随机源,则将引发NotImplementedError。
有关平台所提供的随机数生成器的易于使用的界面,请参阅random.SystemRandom。
回答 4
您可以构建随机的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
关于所需的随机字符串类型,您实际上并没有说太多。但是无论如何,您都应该研究该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
有时,我想要的是半发音,半记忆的随机字符串。
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。
吉姆
回答 7
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']
>>>
请享用。;)
回答 8
安装此软件包:
pip3 install py_essentials
并使用以下代码:
from py_essentials import simpleRandom as sr
print(sr.randomString(4))
回答 9
此函数生成由大写,小写字母,数字组成的随机字符串,传递长度分隔符,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
回答 10
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
回答 11
在python3.6+
你可以使用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))
回答 12
尝试从随机导入中导入以下软件包*