我需要生成随机的32位数字和15个字符的字符串,以获得09826843-5112-8345-7619-372151470268
和qcRtAhieRabnpUaQ
之类的内容。我使用以下代码生成数字:
import random
"-".join(['%08d' % random.randrange(0, 10e7),
'%04d' % random.randrange(0, 10e3),
'%04d' % random.randrange(0, 10e3),
'%04d' % random.randrange(0, 10e3),
'%012d' % random.randrange(0, 10e11)])
是否有类似的方法只用random
模块创建不区分大小写的15-char字符串?
答案 0 :(得分:3)
import random
import string
''.join(random.sample(string.ascii_letters, 15))
import uuid
str(uuid.uuid4())
答案 1 :(得分:3)
import numpy as np
import random
import string
def random_string(num_chars, symbols):
return "".join(random.choice(symbols)
for _ in range(num_chars))
def random_string2(num_chars, symbols, replace=True):
"""Random string with replacement option"""
symbols = np.asarray(list(symbols))
return "".join(np.random.choice(symbols, num_chars, replace))
def main():
print(random_string(15, string.ascii_letters))
print(random_string2(15, string.ascii_letters, False))
print(random_string2(15, string.ascii_letters, True))
if __name__ == "__main__":
main()
请注意,字符串中的元素不必是唯一的(我认为这是因为“qcRtAhieRabnpUaQ”有2'a')。
如果您希望元素是唯一的,那么@Sergey Gornostaev的解决方案可能是最优雅的,但是这会将ascii_letters中的唯一元素数量强加为您可以生成的最长字符串。
答案 2 :(得分:1)
import random
rand_cap = [chr(random.randint(65, 90)) for i in range(7)]
rand_small = [chr(random.randint(97, 122)) for i in range(7)]
rand_chars_list = rand_cap + rand_small
random.shuffle(rand_chars_list)
rand_chars = ''.join(rand_chars_list)