方法概述:
1.ascii_letters方法的作用是生成全部字母,包括a-z,A-Z
2.digits方法的作用是生成数组,包括0-9
import string
a = string.ascii_letters
b = string.digits
print(a)
print(b)
使用场景:生成激活码(优惠券),激活码一般都是字母和数字组成的,首先要有一个所有字母和数字的字符串,然后随机取出几个字母或数字
import random
import string
ALL_CHARS = string.digits + string.ascii_letters
def generate_code(code_len=4):
"""生成指定长度的验证码
:param code_len: 验证码的长度(默认4个字符)
:return: 由大小写英文字母和数字构成的随机验证码字符串
"""
return ''.join(random.choices(ALL_CHARS, k=code_len))
"""
join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
random.choices(population,weights=None,*,
cum_weights=None,k=1)
Python3.6版本新增。
population:集群。
weights:相对权重。
cum_weights:累加权重。
k:选取次数。
"""
for _ in range(10):
print(generate_code())
说明:random模块的sample和choices函数都可以实现随机抽样,sample实现无放回抽样,这意味着抽样取出的字符是不重复的;choices实现有放回抽样,这意味着可能会重复选中某些字符。这两个函数的第一个参数代表抽样的总体,而参数k代表抽样的数量。
String模块中的常量:
string.digits:数字0~9
string.ascii_letters:所有字母(大小写)
string.lowercase:所有小写字母
string.printable:可打印字符的字符串
string.punctuation:所有标点
string.uppercase:所有大写字母