Python(3)生成指定长度的随机字符串

需求:生成包含大小写字母数字下划线的指定长度的字符串。

方法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版权协议,转载请附上原文出处链接和本声明。