哪个网站学seo是免费的,河北通信网站建设,第一营销网,哪里做网站公司好本文章记录观看B站python教程学习笔记和实践感悟#xff0c;视频链接#xff1a;【花了2万多买的Python教程全套#xff0c;现在分享给大家#xff0c;入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6share_sourcecopy_webv…本文章记录观看B站python教程学习笔记和实践感悟视频链接【花了2万多买的Python教程全套现在分享给大家入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6share_sourcecopy_webvd_source404581381724503685cb98601d6706fb
上节课学习了字符串的编码和解码数据验证的方法字符串的处理字符串的拼接操作和字符串的去重操作本节课学习正则表达式的简介以及相关符号re模块中match函数的使用re模块中search函数和findall函数的使用re模块中sub函数和split函数的使用。
1.正则表达式的简介以及相关符号
正则表达式就是特殊的字符序列它能帮助用户便捷地检查一个字符串是否符合某种模式。
那么正则表示式也有很多类型。
1元字符 上图只是元字符的部分字符这里学习部分。
2限定符 限定符就是用于限定匹配的次数也就是限定查找到的个数。
3其他字符 其他类型的正则表达式。
2.re模块中match函数的使用 对于上述的正则表达式需要有专门的函数去用python中有模块叫re模块是python中正则表达式的一个操作而且这是一个内置模块不需要单独安装。上图中五个函数是本节要学的。下为对代码实现实例
import re #导入
#这里需要写一个模式字符串就是规则根据前面学习的\d表示0-9的整数,\是转义符也就是说这里将“.”变成一个普通的点
pattern\d\.\d#表示出现的次数其前面的数字表示重复几次“\d表示出现0-9次所以这规则意思就是“0-9的数字.出现0-9的字符串可以被匹配”
sI study Python 3.11 day #待匹配字符串
#下面执行match函数来查找s里有没有满足“0-9的数字.出现0-9的字符串可以被匹配”的字符串
matchre.match(pattern,s,re.I) #模块re的match方法这里re.I表示调用re中的ignore也就是忽略大小写
#总结xxre.match(模式字符串名,匹配字符串名,其他参数)
print(match)s23.11 I study Python day #第二个待匹配字符串
match2re.match(pattern,s2,re.I) #模块re的match方法这里re.I表示调用re中的ignore也就是忽略大小写
print(match2)print(匹配值的起始位置,match2.start()) #输出匹配值的起始位置
print(匹配值的结束位置,match2.end())#输出匹配值的终止位置注意结束位置是不包括的位置
print(匹配区间的位置元素,match2.span())#输出开始结束区间位置的元素注意结束位置是不包括的位置
print(待匹配的字符串,match2.string)#输出待匹配的字符串
print(匹配的数据,match2.group())#输出匹配到的数据
输出结果 3.re模块中search函数和findall函数的使用
对于前面那个模块罗列的re模块里面的函数除了第一种的match还有其他的函数可以使用。match的功能是从字符串的开始位置开始匹配除非是在第一个就能匹配到否则的话就会输出None。为了解决这种弊端我们选择search函数。
search函数式在整个字符串中去查找找到就行不一定在开始位置0这个适用范围显然优于match下为实例
import re #导入
#这里需要写一个模式字符串就是规则根据前面学习的\d表示0-9的整数,\是转义符也就是说这里将“.”变成一个普通的点
pattern\d\.\d#表示出现的次数其前面的数字表示重复几次“\d表示出现0-9次所以这规则意思就是“0-9的数字.出现0-9的字符串可以被匹配”
sI study Python3.11 every day Python2.7 #待匹配字符串
#下面执行match函数来查找s里有没有满足“0-9的数字.出现0-9的字符串可以被匹配”的字符串
matchre.search(pattern,s) #模块re的search方法默认忽略大小写
#xxre.search(模式字符串名,匹配字符串名,其他参数)s24.10 Python I study every day #第二个待匹配字符串
s3Python I study every day #第三个待匹配字符串没有数字输出结果是None
match2re.search(pattern,s2) #模块re的search方法默认忽略大小写
match3re.search(pattern,s3) #模块re的search方法默认忽略大小写
print(match)
print(match2)
print(match3)#如果想输出匹配的数据需要用到match.group()的方法
print(match.group()) #因为search找到的是第一个匹配的数据因此match返回的是3.11
print(match2.group())#match返回的是4.10
print(match3.group())#没有数据因此match返回的是None
结果如下 由于search只能返回第一个满足条件的数据其他符合条件的都被忽略了。为了保证其他满足条件的也可以输出使用另一个函数findall。
findall的功能是用于在整个字符串中搜索所有符合正则表达式的数据结果是一个列表类型。下为实例;
#下为findall的实例
import re #导入
#这里需要写一个模式字符串就是规则根据前面学习的\d表示0-9的整数,\是转义符也就是说这里将“.”变成一个普通的点
pattern\d\.\d#表示出现的次数其前面的数字表示重复几次“\d表示出现0-9次所以这规则意思就是“0-9的数字.出现0-9的字符串可以被匹配”
sI study Python3.11 every day Python2.7 #待匹配字符串
s24.10 Python I study every day #第二个待匹配字符串
s3Python I study every day #第三个待匹配字符串没有数字输出结果是None
lstre.findall(pattern,s)#可以看到findall函数将所有符合条件的都列出来了
lst2re.findall(pattern,s2)
lst3re.findall(pattern,s3)print(lst)
print(lst2)
print(lst3)
结果如下所示 4.re模块中sub函数和split函数的使用
上面三个函数都是为了找到满足条件的数据而下面这两个函数是用于找到并且替换目标数据的函数。sub函数的功能如上所示是“对字符串当中指定的子串进行替换”可以用于将字符串中的不方便展示的关键字或爬虫之类的字符替换掉。这不禁让博主想到某某文学城的“口口文学”以及某黑暗降临的“**”违禁词替换审核这有什么不能过的
下为具体实例以及解释
import re
#下为函数sub的实例
#这里需要写一个模式字符串,这里的规则相当于不可以出现这些字眼如果出现就需要用其他字符换掉
pattern黑客|破解|反爬
s我想学习python想破解一些VIP视频python可以实现无底线反爬吗#假如这是我们发表的一段评论那么这个“匹配字符串”中的违禁词需要替换掉
#语法格式新的变量名re.sub(pattern,想要替换的字符串注意用框柱哦,匹配字符串名)
new_sre.sub(pattern,xxx,s)
print(new_s)
结果如下该说不说加上违禁词替换莫名让人浮想联翩 第二个函数就是split函数它和字符串的split是一样的分割。这里视频举的例子是打开百度网址搜索ysj复制那个搜索结果页面的网址
https://www.baidu.com/s?wdysjrsv_spt1rsv_iqid0xedc9cb50000d9767issp1f8rsv_bp1rsv_idx2ieutf-8tn68018901_58_oem_dgrsv_enter1rsv_dltbrsv_sug34rsv_sug13rsv_sug7100rsv_sug20rsv_btypetinputT2637rsv_sug43928
这里我们想要让其网址变短一点观察这一长串wd是这个搜索框的一个名字第一个后面都是这种参数的形式只保留这些其他删掉将其作为待匹配字符串
https://www.baidu.com/s?wdysjrsv_spt1
#下为函数split的实例
pattern2[?|]#意思就是将待匹配字符串被或者|拆分
s2https://www.baidu.com/s?wdysjrsv_spt1
lstre.split(pattern2,s2)
print(lst)
结果如下 本节完