import random, string

#第一种方法(推荐)
def random_str(slen=10):
    seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-"
    sa = []
    for i in range(slen):
      sa.append(random.choice(seed))
    return ''.join(sa)
    #random_str(8)运行结果:l7VSbNEG

#第二种方法,random.sample可以从指定的序列中,随机的截取指定长度的片断,不作原地修改
def random_string(slen=10):#截取长度不能超过指定序列的长度
    return ''.join(random.sample(string.ascii_letters + string.digits + '!@#$%^&*()_+=-', slen))
    #random_string(8)运行结果:VOuCtHZs

不想在文件里有太多函数,改进一下:

import random

def random_str(digits=True, lowercase=True, uppercase=True, symbol=True, slen=10):
    seed = ''
    seed = seed + '1234567890' if digits else seed+''
    seed = seed + 'abcdefghijklmnopqrstuvwxyz' if lowercase else seed + ''
    seed = seed + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' if uppercase else seed + ''
    seed = seed + '!@#$%^&*()_+=-' if symbol else seed + ''
    if len(seed)==0:
        return None
    sa = []
    for i in range(slen):
      sa.append(random.choice(seed))
    return ''.join(sa)

 

posted on 2019-11-13 10:01  math98  阅读(5810)  评论(0)    收藏  举报