如何生成大小为N的字符串,由数字和大写英文字母组成,例如:
6个754z4英国U911K4型
如何生成大小为N的字符串,由数字和大写英文字母组成,例如:
6个754z4英国U911K4型
当前回答
使用Numpy的随机choice()函数
import numpy as np
import string
if __name__ == '__main__':
length = 16
a = np.random.choice(list(string.ascii_uppercase + string.digits), length)
print(''.join(a))
文档在这里http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.random.choice.html
其他回答
我想建议您下一个选择:
import crypt
n = 10
crypt.crypt("any sring").replace('/', '').replace('.', '').upper()[-n:-1]
妄想模式:
import uuid
import crypt
n = 10
crypt.crypt(str(uuid.uuid4())).replace('/', '').replace('.', '').upper()[-n:-1]
如果您想要一个易于使用但高度可定制的密钥生成器,请使用密钥生成器pypi包。
这里是GitHub repo,您可以在其中找到完整的文档。
您可以自定义它,以提供您想要的字符串jist,并提供更多选项。下面是一个示例:
from key_generator.key_generator import generate
custom_key = generate(2, ['-', ':'], 3, 10, type_of_value = 'char', capital = 'mix', seed = 17).get_key()
print(custom_key) # ZLFdHXIUe-ekwJCu
希望这有帮助:)
免责声明:这使用了我制作的密钥生成器库。
现在可以在这里使用一个新的库(python>=3.6)
from chancepy import Chance
random_string = Chance.string(length=10, pool="someLettersAndNumbers123")
我会这样做:
import random
from string import digits, ascii_uppercase
legals = digits + ascii_uppercase
def rand_string(length, char_set=legals):
output = ''
for _ in range(length): output += random.choice(char_set)
return output
或者只是:
def rand_string(length, char_set=legals):
return ''.join( random.choice(char_set) for _ in range(length) )
我已经看过了几乎所有的答案,但没有一个看起来更容易。我建议您尝试密码库,它通常用于创建随机密码。
您可以生成任意长度、标点符号、数字、字母和大小写的字符串。
这是您案例的代码:
from passgen import passgen
string_length = int(input())
random_string = passgen(length=string_length, punctuation=False, digits=True, letters=True, case='upper')