# 正则模块
# 转义符
# r' '
# re模块
# findall search match
# sub subn split
# compile finditer
# 分组在re中的应用 取消分组的特殊性 (?:正则)
# findall 优先显示分组中的内容
# split 保留分组中的内容
# search 通过group(n)来按照分组的顺序查看分钟匹配到的内容
# 分组命名
# (?P<分组名>正则表达式)
# \m 通过转义数字m 来获取m对应位置上的 那个分组中的内容
# random
# 随机小数
# random
# uniform
# 随机整数
# randint
# randrange
# 随机抽取
# choice
# sample
# 打乱顺序
# shuffle
# -----------------------------------转义符 ----------------------------------------
#在网页验证之后的正确正则表达式放入r" ",就可以了.
#------------------------------------ re 模块---------------------------------------
#----findall(正则表达式,字符串)--
# import re
# ret1 = re.findall(r"\d","1987adfa324244") # 将匹配到的放入一个列表中保存
# print(ret1)
#----search(正则表达式,字符串)
# import re
# ret2 = re.search(r"\d","aa1987adfa324244") #只匹配第一个(不需要从开头匹配)
# print(ret2.group())
#--- match(正则表达式,字符串)
# import re
# ret3 = re.match(r"\d","1987adfa324244") #只匹配第一个(但是必须从开头开始匹配,如果匹配不到程序回报错)
# print(ret3.group())
#-- sub(正则表达式,要替换的东西,字符串)
# import re
# ret4 = re.sub(r"\d+","H","1987adfa324244") #使用正则表达式匹配到字符串中的内容,并且使用"H"替换掉,返回字符串.
# print(ret4)
#----subn(正则表达式,要替换的东西,字符串)
# import re
# ret5 = re.subn("\d+","H","197787aaga27387") #使用正则表达式匹配,并且使用"H"替换掉,返回一个元祖(替换后的字符串,匹配的次数)
# print(ret5) # 返回结果是 ('HaagaH', 2)
# ----split(正则表达式,字符串)
# import re
# ret6 = re.split("\d+","aalex67taibai49ritian45") # 使用正则表达式匹配到字符串中的内容,匹配到内容就切一刀,结尾处切一刀回切出来一个"".
# print(ret6) # 输出结果是一个列表.
# -----findall(正则表达式,字符串)
# import re
# ret7 = re.findall("\d+","7987jkk8798hjghj") # 匹配正则表达式,结果是列表,将所有的匹配结果放入列表中.
# print(ret7) # 结果是 ['7987', '8798']
#----- compile(正则表达式) (时间效率)
# import re
# ret8 = re.compile("\d+") #提前编译正则表达式
# res = ret8.search("7987jkk8798hjghj") # 使用编译好的正则表达式对字符串进行匹配,只匹配第一个
# print(res.group())
# ----finditer (获取迭代器---空间效率)
# import re
# ret9 = re.finditer('\d+','sjkhkdy982ufejwsh02yu93jfpwcmc') #获取到迭代器,需要的时候进行取值
# for i in ret9: # 利用循环从迭代器中取值
# print(i.group())
#---------------------------- rangdom 生成随机数模块 ------------------------------------------------
#--------- 随机小数
# import random
# print(random.random()) # 0-1 之内的随机小数
# print(random.uniform(1,5)) # 指定区间内的随机小数
#---------- 随机整数
# import random
# print(random.randint(1,2)) # [1,2]范围内的随机整数
# print(random.randrange(1,2)) # [1,2)范围内的随机整数,取不到2
# print(random.randrange(1,10,2)) # [1,10)范围内的随机整数,取不到10,而且步长是2
#---------列表中随机抽取一个(多个)值
# import random
# lst = [1,2,3,"aa","bbb","ccc"] #定义一个列表
# print(random.choice(lst)) #在列表中随机取一个值,并且打印出来
# print(random.sample(lst,2)) #在列表中随机抽取 2 个值,并且放置在一个列表中.
# --------打乱列表顺序
# import random
# lst = [1,2,3,4,5,6]
# random.shuffle(lst)
# print(lst)
#---------------生成随机验证码(个数,类型) -----------------
#应用场景: 抽奖 \ 彩票 \发红包 \验证码 \洗牌
#-----函数实现(可以控制几位数字)
#
# import random
# def rangd_code(n=4):
# code = ""
# for i in range(n):
# num = random.randint(0,9)
# code += str(num)
# return code
# print(rangd_code(6))
#-----函数实现(可以控制是单独数字 还是 数字+英文字母)
# import random
# def rangd_code(n= 6,alph_flag = True):
# code = ""
# for i in range(n):
# rand_num = str(random.randint(0,9))
# if alph_flag:
# rand_alph = chr(random.randint(97,122))
# rand_alph_upper = chr(random.randint(65,90))
# rand_num =random.choice([rand_alph,rand_alph_upper])
# code += rand_num
# return code
# ret = rangd_code()
# print(ret)