当前位置:网站首页>推导式与正则式
推导式与正则式
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
边栏推荐
猜你喜欢

Gather, unsqueeze and other operators when PTH is converted to onnx

Are realrange and einsum really elegant

Us photo cloud editing helps BiliBili upgrade its experience

Discussion on frame construction and technology selection of short video platform

可视化常见绘图(四)柱状图

可视化之路(十)分割画布函数详解

Detailed explanation of unwind stack backtracking

可视化常见问题解决方案(九)背景颜色问题

城市应急管理|城市突发事故应急通信指挥调度系统

关于'enum'枚举类型以及结构体的问题。
随机推荐
presto日期函数的使用
学习资料
el-table 横向滚动条固定在可视窗口底部
Swin transformer to onnx
可视化之路(九)Arrow类详解
remote: Support for password authentication was removed on August 13, 2021.
什么是闭包?
Emergency communication system for flood control and disaster relief
ES6之箭头函数细谈
可视化之路(十)分割画布函数详解
商业广场无线对讲系统解决方案
重大安保事件应急通信系统解决方案
How to improve the service efficiency of the hotel without blind spots and long endurance | public and Private Integrated walkie talkie?
社区版阿里MQ普通消息发送订阅Demo
“泉”力以赴·同“州”共济|北峰人一直在行动
关于'enum'枚举类型以及结构体的问题。
吴恩达编程作业——Logistic Regression with a Neural Network mindset
安装tui-editor失败,快速解决方案
《Attention in Natural Language Processing》翻译
关于短视频技术轮廓探讨