我需要生成特定格式的随机文本字符串.想要一些想法,以便我可以用Python编写代码.格式为<8位数> <15个字符串>.
#!/usr/bin/python import random import string digits = "".join( [random.choice(string.digits) for i in xrange(8)] ) chars = "".join( [random.choice(string.letters) for i in xrange(15)] ) print digits + chars
编辑:喜欢使用random.choice比randint()更好的想法,所以我更新了代码以反映这一点.
注意:这假定需要小写和大写字符.如果只有小写,则将第二个列表理解更改为:
chars = "".join( [random.choice(string.letters[:26]) for i in xrange(15)] )
显然,对于大写只有你可以翻转它,所以切片是[26:]而不是相反.
查看示例 - 配方59873:随机密码生成.
在食谱的基础上,这是您的问题的解决方案:
from random import choice import string def GenPasswd2(length=8, chars=string.letters + string.digits): return ''.join([choice(chars) for i in range(length)]) >>> GenPasswd2(8,string.digits) + GenPasswd2(15,string.ascii_letters) '28605495YHlCJfMKpRPGyAw' >>>
random.sample
是另一种选择.可以在python.org文档中找到的差异是random.sample
没有替换的样本.因此,random.sample(string.letters, 53)
会导致一个ValueError
.然后,如果你想生成八位数和十五个字符的随机字符串,你会写
import random, string digits = ''.join(random.sample(string.digits, 8)) chars = ''.join(random.sample(string.letters, 15))