随机字符的场景大致有以下场景:
1.产生随机字符串 无数字
2.产生随机长度的字符串 无数字、有数字
3.产生随机手机号
4.产生随机n位的数字
5.产生随机n以内的数字
随机使用的两种思路如下:
一:使用random.randint(0,n)
定义一个字符数据源的数组,要产生多长的字符串就循环调用多少次random.randint(0,n),n=数据源数组的长度,在这个数据源数组中选择随机位置的字符,然后进行拼接返回
def generate_random_str(randomlength=16):
"""
生成一个指定长度的随机字符串
"""
random_str =''
base_str ='ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789'
length =len(base_str) -1
for i in range(randomlength):
random_str +=base_str[random.randint(0, length)]
return random_str
if __name__ == '__main__':
print(generate_random_str(30))
二:使用random.choice随机选择,需要多少长度就随机多少次
这里补充以下choice的用法:
random.choice() 在参数中随机产生返回一个对象 参数可以使list,也可以是string、元祖
import random
random.choice([1, 2, 3, 5, 9]) #返回5
random.choice('A String') #返回n
def getRandom(randomlength=16): """ 生成一个指定长度的随机字符串 """ digits=0123456789 ascii_letters=abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ str_list =[random.choice(digits +ascii_letters) for i in range(randomlength)] random_str =''.join(str_list) return random_str
最后,使用了dict字典实现按照mode按使用场景生成不同的字符串
def getRandomString(mode="mixDigitLetter", len=15):
#按照不同模式生成随机字符串
upperLetter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lowerLetter = "abcdefghigklmnopqrstuvwxyz"
digits="0123456789"
wpecialCharacters = "!@#$%&_-.+="
randomMap ={"digit":digits,"upper":upperLetter,"lower":lowerLetter,"mixDigitLetter":upperLetter+lowerLetter+digits,"mixLetter":upperLetter+lowerLetter,"mixDigitLetterCharcter":upperLetter+lowerLetter+digits+wpecialCharacters}
return getRandom(randomMap[mode],len)
对于第5中产生随机n以内的数字,直接使用random.randomint(0,n)即可
如,产生100以内的整数
print(random.randint(0,100))



