概述
一、功能:
从指定字符集中随机生成字符串。
字符集包含:
- 大写字母(upper): ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’
- 小写字母(lower):‘abcdefghijklmnopqrstuvwxyz’
- 数字(digit): ‘0123456789’
- 符号(punct):r’’’!@#$%^&*’’’
二、代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
import random
class RandomString:
chars = {
'upper': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'lower': 'abcdefghijklmnopqrstuvwxyz',
'digit': '0123456789',
'punct': r'''!@#$%^&*''',
}
def __init__(self, length, *contents):
self.kinds = {}
self.length = length
if len(contents) == 0:
self.kinds = None
else:
for content in contents[0]:
kind = content.split(':')[0]
if len(content.split(':')) == 1:
self.kinds[kind] = 0
else:
self.kinds[kind] = int(content.split(':')[1])
def create(self):
res = ''
charset = ''
if self.kinds is None:
charset = ''.join(c for c in RandomString.chars.values())
else:
if self.length < sum(num for num in rs.kinds.values()):
print('规则不符,生成失败。')
else:
for kind, num in rs.kinds.items():
if num == 0:
pass
else:
for i in range(num):
res += random.choice(RandomString.chars[kind])
charset += RandomString.chars[kind]
for i in range(self.length - len(res)):
res += random.choice(charset)
str_list = list(res)
random.shuffle(str_list)
return ''.join(str_list)
if __name__ == '__main__':
rs = RandomString(10)
rs.create()
三、用法:
1.实例化RandomString
rs = RandomString(length, *contents)
length:要生成的字符串总长度
contents:选择字符集以及某类字符最低数量(可选)
contents格式:[‘字符集1:最少个数’,‘字符集2:最少个数’,‘字符集3:最少个数’,‘字符集4:最少个数’]
最少个数可省略,默认为0。
2.生成字符串
rs.create()
四、实例
例1:生成16位随机字符串,默认选择所有字符集(大写字母、小写字母、数字、符号)
rs = RandomString(16)
rs.create()
'wuYsV@*GWF3Nvj^L'
例2:生成由大写字母、小写字母、数字组成的4位字符串。
rs = RandomString(4,['upper','lower','digit'])
rs.create()
'zmf4'
注意:如果不设置某字符集最少个数,最终生成的字符串中有概率不包含此类字符。
例3:生成由大写字母、小写字母、数字组成的4位字符串。其中各类字符都至少有1个。
rs = RandomString(4,['upper:1','lower:1','digit:1'])
rs.create()
'Lx2d'
例4:生成由大写字母、小写字母、数字、符号组成的10位字符串。其中至少包含4个大写字母,3个小写字母,1个数字。
rs = RandomString(10,['upper:4','lower:3','digit:1','punct'])
rs.create()
'3zM@oARWzS'
最后
以上就是甜蜜鸭子为你收集整理的python随机字符串生成一、功能:二、代码三、用法:四、实例的全部内容,希望文章能够帮你解决python随机字符串生成一、功能:二、代码三、用法:四、实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复