当前位置:  开发笔记 > 编程语言 > 正文

生成给定模式的随机文本字符串

如何解决《生成给定模式的随机文本字符串》经验,为你挑选了3个好方法。

我需要生成特定格式的随机文本字符串.想要一些想法,以便我可以用Python编写代码.格式为<8位数> <15个字符串>.



1> Jay..:
#!/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:]而不是相反.


很好的答案.如果您使用的是Python 3,请将`string.letters`替换为`string.ascii_letters`,并使用`range()`代替`xrange()`.

2> gimel..:

查看示例 - 配方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'
>>> 



3> Devi..:

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))

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有