大虾

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

某些场景下,生成随机字符串是刚需。纯手动写一个未尝不可,不过python内置的string模块能让我们更加方便地实现这个需求。

string提供的变量

# Some strings for ctype-style character classification  
whitespace = ' \t\n\r\v\f'  
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'  
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'  
ascii_letters = ascii_lowercase + ascii_uppercase  
digits = '0123456789'  
hexdigits = digits + 'abcdef' + 'ABCDEF'  
octdigits = '01234567'  
punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""  
printable = digits + ascii_letters + punctuation + whitespace  
# Functions which aren't available as string methods.  
string模块下已经声明好了各种类型的字符串变量,配合random函数可以实现需求了。

生成固定长度的随机字符串
import string  
import random  

# 生成4长度的随机字符串 - 大写字母  运行结果 GHdg  
random_str = ''.join(random.choice(string.ascii_letters) for _ in range(4))  
print(random_str)  


# 生成10长度的随机字符串 - 大写字母和数字混合 运行结果:vbQxRkYG0B  
random_str_num = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(10))  
print(random_str_num)  

瞧,非常方便,如果将其封装成一个函数,以后随时可以拿来用,那就更为方便了。在上面的演示中,for _ in range(int)控制着join执行的次数。

生成一个由随机字符串组成的列表
我们将需求更进一步,生成一个指定长度的随机字符串列表,例如这样:

['QpSJh', 'mhwZA', 'kuWti', 'eJIFT', 'ETlBa']  
这里,就必须要封装一个生成指定长度的随机字符串方法了,先简单封装一个吧。
def random_str(num=1):  
    random_str = ''.join(random.choice(string.ascii_letters) for _ in range(num))  
    return random_str  

name_list = [random_str(10) for _ in range(50)]  
print(name_list)  

非常方便地,就能将一个长度为50的随机字符列表生成出来了。

posted on 2022-09-22 21:45  一灯编程  阅读(322)  评论(0编辑  收藏  举报