说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
有时候我们需要按一定的规则生成字符串,比如说密码,基于安全考虑,有相应的强度要求。今天我们来完成一个类似的需求,抛砖引玉。
这个需求是:从大小写字母、数字中随机生成一个五位的字符串,必须至少包含数字、大写字母、小写字母各一个。
这里我们就用到 Python 的内置库 string 和 random,一个为我们提供了 ascii 字符集的子集,一个为我们提供了伪随机的相关功能。
接下来就来完成这个需求。
import string
import random
# 大写数量, 1-3 个
upper = random.choice(range(1,4))
upper
# 2
# 小写数量
lower = random.choice(range(1, 5-upper))
lower
# 2
# 数字数量
digit = 5 - (upper+lower)
digit
# 1
# 生成各组的随机字符
random_strings = (
random.choices(string.ascii_uppercase, k=upper) +
random.choices(string.ascii_lowercase, k=lower) +
random.choices(string.digits, k=digit)
)
random_strings
# ['A', 'X', 'x', 'm', '9']
# 拼接为字符串
random_strings = ''.join(random_strings)
random_strings
# 'mxA9X'
这样就完成了需求。
(完)
更新时间:2022-05-12 10:45:51 标签:pytho 字符串 随机 密码