当前位置:网站首页>推导式与正则式
推导式与正则式
2022-04-23 06:19:00 【qq1033930618】
一、推导式
res = []
for i in range(1, 11):
res.append(i ** 2)
print(res) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
res = [x ** 2 for x in range(1, 11)] # 外方括号表示列表推导式
print(res)
res = []
for i in range(1, 11):
if i ** 2 % 2 == 0:
res.append(i ** 2)
print(res) # [4, 16, 36, 64, 100]
res = [x ** 2 for x in range(1, 11) if x ** 2 % 2 == 0]
print(res)
res = [x for x in "python"] # 拆分字符串
print(res) # ['p', 'y', 't', 'h', 'o', 'n']
res = [x + y for x in "python" for y in "123" if x + y != "y1"] # 拆分字符串
print(res)
# ['p1', 'p2', 'p3', 'y2', 'y3', 't1', 't2', 't3', 'h1', 'h2', 'h3', 'o1', 'o2', 'o3', 'n1', 'n2', 'n3']
res = (x ** 2 for x in range(1, 11)) # ()被定义为生成器
print(res) # <generator object <genexpr> at 0x7fdb743e9570>
res = tuple(x ** 2 for x in range(1, 11)) # 关键字tuple推导元组
print(res)
dic = {
x: x ** 2 for x in range(1, 11)} # {}大括号字典 带冒号:
print(dic)
ss = {
x for x in range(1, 11)} # 无序不可重复集合 无冒号
print(ss)
ss = {
x for x in "aaa123"} # 无序不可重复集合 无冒号
print(ss)
二、正则式
import re
# 正则表达式 字符串 重在处理规则
result = re.findall("py", "python") # "python" 中是否含有py
print(result)
result = re.findall("pn", "python") # "python" 中是否含有pn
print(result)
result = re.findall("python", "I like python") # 句子中是否含有单词
print(result)
result = re.findall("o", "I love python") # 句子中是否含有字母
print(result)
result = re.findall("2", "1234567890abcdef") # 句子中是否含有数字
print(result)
# 预定义字符
# \d \s \w \D \S \W 大小写互为补集
# \d 所有数字 0123456789
# \D 非数字
# \w 包含下划线在内 a-z A-Z 0-9
# \W 特殊字符 不带数字大小写字母下划线
# \s 空白 制表 换行
# \S 非空白 制表 换行
result = re.findall("\d", "12a789bc345f67890de") # 句子中所有数字
print(result)
result = re.findall(r"\d", "12a789bc345f67890de") # 句子中所有数字 不想转义处理让r原意输出
print(result)
result = re.findall(r"\D", "1de2abc345f678__90de") # 句子中所有非数字
print(result)
result = re.findall(r"\w", "1de2abc345f6__7890A$%&Ade") # 句子中所有包含下划线在内 a-z A-Z 0-9
print(result)
result = re.findall(r"\W", "1de2abc345f6__7890A$%&Ade") # 句子中所有特殊字符 不带数字大小写字母下划线
print(result)
result = re.findall(r"\s", "1de2abc 345f\n6__7890A\t$%&Ade") # 句子中所有空白 制表 换行
print(result)
result = re.findall(r"\S", "1de2abc 345f\n6__7890A\t$%&Ade") # 句子中所有非空白 制表 换行
print(result)
# 元字符
# [] 匹配一个字符 或关系
result = re.findall(r"[123]", "1e3deabc45f\n6__7890A\t$%&Ade") # 1或2或3
print(result)
result = re.findall(r"[\d\s]", "1e3deabc45f\n6__7890A\t$%&Ade") # \d或\s
print(result)
result = re.findall(r"[^\d\s]", "1e3deabc45f\n6__7890A\t$%&Ade") # \d或\s取反 ^只有在中括号里取反
print(result)
# - 区间
result = re.findall(r"[1-7]", "1e3deabc45f\n6__7890A\t$%&Ade") # 1到7
print(result)
result = re.findall(r"[b-f]", "1e3deaCCCbc45f\n6__7890A\t$%&Ade") # b到f
print(result)
result = re.findall(r"[1-7b-f]", "1e3deabc45f\n6__7890A\t$%&Ade") # 1-7或b-f都放在一起
print(result)
# 以上所有概念都是一个字符
# ()代表分组
result = re.findall(r"a([abc])", "aaabacad")
print(result)
result = re.findall(r"a[abc]", "aaabacad") # a后面可以是任意或关系中的一个 查找aa ab ac
print(result)
# 重复匹配
result = re.findall(r"\d\d\d", "123456789abcdefg") # 句子中连续三个数字
print(result)
# {n}前字符重复n次
result = re.findall(r"\d{3}", "123456789abcdefg") # 句子中连续三个数字
print(result)
# {n, m}前字符重复至少n次 至多m次
result = re.findall(r"\d{2,5}", "12e3456789abc6defg") # 句子中连续2-5个数字
print(result) # 他会尽可能多的匹配 贪婪匹配
result = re.findall(r"\d{2,5}?", "12e3456789abc6defg") # 句子中连续2-5个数字
print(result) # 打一个英文半角? 非贪婪匹配 和{n}无区别
result = re.findall(r"\d{2,}", "12e3456789abc6defg") # 句子中至少连续出现两次数字
print(result) # 贪婪匹配
# ? 前面字符出现0或1次 {0,1}
result = re.findall(r"\d?", "12e3456789abc6defg")
print(result) # 非数字地方会使用空字符串填充" " 末尾还会多一个结束" "
# + 前面字符出现至少1次 {1,}
result = re.findall(r"\d+", "12e3456789abc6defg")
print(result) # 贪婪 分块混合
result = re.findall(r"\d+?", "12e3456789abc6defg")
print(result) # 非贪婪 数字挨个提取
# * 前面字符不出现 出现0次 出现任意次
result = re.findall(r"\d*", "12e3456789abc6defg") # 句子中至少连续出现两次数字
print(result) # 贪婪 分块混合 且每个非数字字符均有" "占位
# 转义符号*+?
result = re.findall(r"\*", "12e*345a*b67*89*abc6d*efg") # 找*必须转义
print(result)
result = re.findall(r"a\*b", "12e*345a*b67*89*abc6d*efg") # 找*必须转义
print(result)
result = re.findall(r"a*b", "12e*345a*b67*89*abc6d*efg") # 找b前面a有没有无所谓 有就打印
print(result)
result = re.findall(r"\\d", "12e*345\da*b67*\d89*abc6d*efg") # 找"\d"
print(result) # 打印出来应该是\\d而不是\d 虽然找的是\d
# 贪婪与非贪婪
result = re.findall(r"d\w+d", "dxxxxxxxxdxxxxxd") # 贪婪的以d开头以d结尾
print(result) # dxxxxxxxxdxxxxxd
result = re.findall(r"d\w+?d", "dxxxxxxxxdxxxxxd") # 非贪婪的以d开头以d结尾
print(result) # dxxxxxxxxd
htmlstr = "<td>python</td><td>$123</td><td>[email protected]</td>"
result = re.findall(r"<td>.+</td>", htmlstr) # .除了换行外所有一切
print(result) # ['<td>python</td><td>$123</td><td>[email protected]</td>']
htmlstr = "<td>python</td><td>$123</td><td>[email protected]</td>"
result = re.findall(r"<td>.+?</td>", htmlstr) # 非贪婪
print(result) # ['<td>python</td>', '<td>$123</td>', '<td>[email protected]</td>']
htmlstr = "<td>python</td><td>$123</td><td>[email protected]</td>"
result = re.findall(r"<td>(.+?)</td>", htmlstr) # 只要小括号之内
print(result) # ['python', '$123', '[email protected]']
# 反向引用
wordstr = """'hello' "python" 'love" "haha'"""
# 提取两侧符号相同的单词
result = re.findall(r"['\"]\w+['\"]", wordstr) # 只要小括号之内 如果不加+就默认中间一个字母 打印不出
print(result) # ["'hello'", '"python"', '\'love"', '"haha\'']
result = re.findall(r"(['\"])(\w+)(\1)", wordstr) # 前侧用()装一个分组 (\1)是第一个分组内内容
print(result) # [("'", 'hello', "'"), ('"', 'python', '"')] 将匹配出来的三个小括号内部分组成元组
print([x[1] for x in result]) # ['hello', 'python']
# 校验密码禁止连续出现3次数字
result = re.findall(r"(\d)(\1{2,})", "12222223") # 匹配一个数字 再重复两次以上
print(result) # [('2', '22222')]
print([x[0]+x[1] for x in result]) # ['222222']
# 位置匹配 ^(非中括号中)开头 $结尾
result = re.findall(r"\d{11}", "13578617265123123")
print(result)
result = re.findall(r"^\d{11}", "13578617265123123") # 从前面匹配
print(result)
result = re.findall(r"\d{11}$", "13578617265123123") # 从后面匹配
print(result)
result = re.findall(r"^\d{11}$", "13578617265123123") # 必须恰好11数字
print(result)
版权声明
本文为[qq1033930618]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_51326691/article/details/120179336
边栏推荐
- 可视化之路(九)Arrow类详解
- 可视化常见问题解决方案(九)背景颜色问题
- Emergency medical communication solution | mesh wireless ad hoc network system
- 使用el-popconfirm和el-backtop不生效
- Machine vision series (02) -- tensorflow2 3 + win10 + GPU installation
- Emergency communication system for flood control and disaster relief
- PyTorch 20. Pytorch tips (continuously updated)
- Take you to travel in space, and American photography technology provides comprehensive technical support for aerospace creative applet
- “泉”力以赴·同“州”共济|北峰人一直在行动
- Pep517 error during pycuda installation
猜你喜欢
随机推荐
美摄助力百度“度咔剪辑”,让知识创作更容易
地铁无线对讲系统
PyTorch 9. optimizer
机器视觉系列(02)---TensorFlow2.3 + win10 + GPU安装
Int8 quantification and inference of onnx model using TRT
大型体育赛事无线通信系统
Systrace parsing
Meishe technology launches professional video editing solution for desktop -- Meiying PC version
Proteus 8.10安装问题(亲测稳定不闪退!)
网络层重要知识(面试、复试、期末)
带您遨游太空,美摄科技为航天创意小程序提供全面技术支持
PyTorch 18. torch. backends. cudnn
x86架构初探之8086
记录阿里云服务器挖矿程序处理
什么是闭包?
华为云MVP邮件
可视化常见问题解决方案(九)背景颜色问题
可视化常见问题解决方案(七)画图刻度设置解决方案
Solution of emergency communication system for major security incidents
PyTorch 22. Pytorch common code snippet collection









