需求:生成包含大小写字母数字下划线的指定长度的字符串。
方法1
代码
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
"""
__File__ = demo_random.py
__Project__= _JAuto-Interface
__Time__ = 2022-02-16 17:06:46
__Author__ = 黎晟
"""
import random
# 先定义一个目标子串
GRAMMAR = "ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789"
def random_str1(length):
"""生成随机长度str"""
target = ""
grammar_length = len(GRAMMAR)-1
if length > 0:
for i in range(length):
tmp_str = random.choice(GRAMMAR) # 使用random.choice()
tmp_str = GRAMMAR[random.randint(0, grammar_length)] # 使用random.randint()
target += tmp_str
return target
else:
raise IndexError()
# 测试用例
print("用例1:", random_str(10))
print("用例2:", random_str(0))
执行结果
可以看到生成了指定长度,指定规则的字符串
方法2
方法1中,需要自定义规则字符串,不是那么高大上,那么下面就介绍一种更加高大上的法子,1行代码直接搞定
代码
def random_str_gds(length):
return ''.join([random.choice(string.digits + string.ascii_letters) for i in range(length)])
# 测试用例
print("用例1:", random_str_gds(10))
拆解一下代码:
def random_str_gds_detail(length):
target_lst = []
for i in range(length):
grammar = string.digits + string.ascii_letters
target_lst.append(random.choice(grammar))
return ''.join(target_lst)
# 测试用例
print("用例1:", random_str_gds(10))
print("用例1:", random_str_gds_detail(10))
执行结果

拓展
- string.digits:生成所有字母,从a-z和A-Z
- string.ascii_letters:生成所有数字0-9
源码如下:
参考链接
python中生成一个指定长度的随机字符串实现示例:https://www.cnblogs.com/wz123/p/12524336.html
版权声明:本文为qq_42841075原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。