import random
import string
dict_num='0123456789'
dict_num_letter='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
dict_num_letter_all='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
dict_symbol='!@#$%^&*()-_+={[}]\\|":;?/>.<,~'
def random_seq(choice_seq,count=3,repeatable=True):
if repeatable:
return [random.choice(choice_seq) for _ in range(count)]
return random.sample(choice_seq,count)
def num_shuffle(count,repeatable=True):
digits=random_seq(string.digits,count,repeatable=True)
random.shuffle(digits)
return ''.join(digits)
def uppercase_shuffle(count,repeatable=True):
letters=random_seq(string.ascii_uppercase,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def lowercase_shuffle(count,repeatable=True):
letters=random_seq(string.ascii_lowercase,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def letter_shuffle(count,repeatable=True):
letters=random_seq(string.ascii_letters,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def num_letter_shuffle(count,repeatable=True):
letters=random_seq(dict_num_letter,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def num_letter_all_shuffle(count,repeatable=True):
letters=random_seq(dict_num_letter_all,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def symbol_shuffle(count,repeatable=True):
letters=random_seq(dict_symbol,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def generate_template_words(dict_template):
'''
u代表大写字母A-Z
l代表小写字母a-z
n代表数字0-9
a代表大小写字母A-Z a-z的混合
b代表大写字母A-Z与数字0-9的混合
c代表大小写字母A-Z a-z与数字0-9的混合
s代表通用特殊符号:!@#$%^&*()-_+={[}]\\|":;?/>.<,~
'''
str_list={'u':uppercase_shuffle,'l':lowercase_shuffle,'n':num_shuffle,'a':letter_shuffle,'b':num_letter_shuffle,'c':num_letter_all_shuffle,'s':symbol_shuffle}
str=''
start_word=''
count=1
par_if=False
for index in range(len(dict_template)):
if dict_template[index] in str_list.keys() and par_if==False:
if start_word!='' and dict_template[index]==start_word:
count+=1
if index==len(dict_template)-1:
str+=str_list[start_word](count)
else:
if start_word!='':
str+=str_list[start_word](count)
count=1
start_word=dict_template[index]
else:
start_word=dict_template[index]
else:
if dict_template[index]=='{':
par_if=True
if start_word!='':
str+=str_list[start_word](count)
count=1
if dict_template[index]!='{' and par_if:
if dict_template[index]=='}':
par_if=False
start_word=''
else:
str+=dict_template[index]
print(str)
return str
if __name__=='__main__':
generate_template_words('nnn{-}{JK}nnn') #随机生成 720-JK055 551-JK156 等等
更高级玩法:
import random
from random import randint
import string
dict_num='0123456789'
dict_num_letter='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
dict_num_letter_all='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
dict_symbol='!@#$%^&*()-_+={[}]\\|":;?/>.<,~'
def random_seq(choice_seq,count=3,repeatable=True):
if repeatable:
return [random.choice(choice_seq) for _ in range(count)]
return random.sample(choice_seq,count)
def num_shuffle(count,repeatable=True):
digits=random_seq(string.digits,count,repeatable=True)
random.shuffle(digits)
return ''.join(digits)
def uppercase_shuffle(count,repeatable=True):
letters=random_seq(string.ascii_uppercase,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def lowercase_shuffle(count,repeatable=True):
letters=random_seq(string.ascii_lowercase,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def letter_shuffle(count,repeatable=True):
letters=random_seq(string.ascii_letters,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def num_letter_shuffle(count,repeatable=True):
letters=random_seq(dict_num_letter,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def num_letter_all_shuffle(count,repeatable=True):
letters=random_seq(dict_num_letter_all,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def symbol_shuffle(count,repeatable=True):
letters=random_seq(dict_symbol,count,repeatable=True)
random.shuffle(letters)
return ''.join(letters)
def generate_template_words(dict_template):
'''
u代表大写字母A-Z
l代表小写字母a-z
n代表数字0-9
a代表大小写字母A-Z a-z的混合
b代表大写字母A-Z与数字0-9的混合
c代表大小写字母A-Z a-z与数字0-9的混合
s代表通用特殊符号:!@#$%^&*()-_+={[}]\\|":;?/>.<,~
如果固定哪些字符用英文{}括起来(包含空格),如果固定选择哪些字符用英文()括起来,英文逗号隔开
例如:332-JK123 如果中间横杠-是固定的,其他字母随机则:nnn{-}uunnn
如果JK字母也是固定的,则:nnn{-}{JK}nnn
如果首个数字是固定在3,6,8中选择的,则:{(3,6,8)}nn{-}{JK}nnn
'''
str_list={'u':uppercase_shuffle,'l':lowercase_shuffle,'n':num_shuffle,'a':letter_shuffle,'b':num_letter_shuffle,'c':num_letter_all_shuffle,'s':symbol_shuffle}
str=''
start_word=''
count=1
par_if=False
index=0
while index<(len(dict_template)):
if dict_template[index] in str_list.keys() and par_if==False:
if start_word!='' and dict_template[index]==start_word:
count+=1
if index==len(dict_template)-1:
str+=str_list[start_word](count)
else:
if start_word!='':
str+=str_list[start_word](count)
count=1
start_word=dict_template[index]
else:
start_word=dict_template[index]
else:
if dict_template[index]=='{':
par_if=True
if start_word!='':
str+=str_list[start_word](count)
count=1
if dict_template[index]!='{' and par_if:
if dict_template[index]=='}':
par_if=False
start_word=''
elif dict_template[index]=='(':
str_0=dict_template[index+1:].split(')')[0].split(',')
str+=random.choice(str_0)
index+=(len(str_0)+len(str_0)-1+1)
par_if=False
if index+2<len(dict_template):
#start_word=dict_template[index+2]
count=1
else:
str+=dict_template[index]
index+=1
print(str)
return str
if __name__ == '__main__':
generate_template_words(dict_template='{(3,6,8)}nn{-}{JK}nnn') #307-JK676 346-JK533 691-JK491等等