如何生成大小为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 uuid
lowercase_str = uuid.uuid4().hex
lowercase_str是一个随机值,如“cea8b32e0934aae8c005a35d85a5c0”
uppercase_str = lowercase_str.upper()
上机匣_str为“CEA8B32E00934AAEA8C005A35D85A5C0”
面向安全的方法
我们对任何安全相关的建议都是避免“自己动手”,并使用经过专门安全审查的机密模块。
这来自文档的最佳实践部分:
import string
import secrets
alphabet = string.ascii_letters + string.digits
password = ''.join(secrets.choice(alphabet) for i in range(8))
由于您特别要求使用大写字母,因此您可以用ascii_capsaper替换ascii_cletters,或者只使用以下内容将密码大写:
password = password.upper()
不以安全为目的的标准方法
这个问题的规范方法(如指定)使用随机模块中的choices()函数:
>>> from random import choices
>>> from string import ascii_uppercase, digits
>>> population = ascii_uppercase + digits
>>> str.join('', choices(population, k=6))
'6JWF1H'
我使用此方法从a->z生成长度为n的随机字符串
输入随机数s=“”.join(随机选择([chr(i)for i in range(ord('a'),ord('z'))])for _ in range(10))
我以为还没有人回答这个问题,哈哈!但嘿,这是我自己的尝试:
import random
def random_alphanumeric(limit):
#ascii alphabet of all alphanumerals
r = (range(48, 58) + range(65, 91) + range(97, 123))
random.shuffle(r)
return reduce(lambda i, s: i + chr(s), r[:random.randint(0, len(r))], "")
使用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