00:00
哈喽,各位小伙伴,欢迎大家回到学习园地,那么在上节课呢,给大家去讲解了一下我们的这个正则的两个函数啊,Match与设置,因为这两个呢是相对比较重要的,包括在使用和这个后期的面试啊,工作当中啊,都是比较重要的函数啊,所以我们单独去讲一下好了,那么接下来呢,这节课呢,我们把剩下的几个函数呢,再给大家去,呃,去做一个介绍啊,那我们来看一下呃,还有哪些哪几个函数啊,来这里面我去新建一个新的文件。嗯,右键点击。Python新建啊,我们选择第三个文件啊,第三个文件就是嗯re嗯,模块I模块相关啊函数啊函数啊,然后呢,其他好,那我们看一下啊,这个模块当中呢,还有哪些函数啊,比如说我们把这三个啊再给他去做一个。啊做一个这个介绍啊,那这三个函数啊,这里边有一个find,还有一个find尔啊以及一个呃,Sub啊sub啊那我们来看一下啊,这个find呢,就是根据你的正则表达式啊呃,去字符串当中去做去匹配,然后呢,它匹配是匹配你所有的字符串,并且呢,返回一个啊列表,如果没有找,没有找到这个匹配的结果呢,就返回一个空的这个啊分类的,也就说按照这个位置,应该说是按照这个正则表达式的规则啊,规则在字符二中啊PK元素啊,结果返回一个什么啊,一个列表,结果返回一个列表啊,如果没有找到,没有找到只返回,只返回什么啊,返回一个空对个啊空对的,那这是当前这个函数啊,然后我们下面这个叫find呢,Find也是,这个跟上面的结果是一样的啊,只不过他们的返回值不一样,比如说它也是按照这个正则,呃,叫正则。
01:38
表达式的规则啊,规则在字符串中,字符串中啊字符段中匹配啊应该说是匹配所有符合条件的啊符合规则的是吧?啊规则的这个叫啊元素,然后呢,呃,返回啊返回一个啊迭代器,迭代器啊迭代器的话,我们在呃各位小伙伴在我们基础阶段应该对这个迭代器做个了解啊,如果你不清楚的话,那我们可以简单说一下,迭代器就是一个特殊的呃这个数据序列的对象,它的特点呢,就是可以使用max的函数去调用啊,每每调用次呢它呃获取一次啊获取一次就是这这是一个迭代器的方法,然后呢,迭代器也可以使用那个叫历史的函数直接强转,那这样的话,我们一次性提取也可以使用这个。
02:19
也可以去使用这个,这个叫不循环的方式啊,来进行循环变利啊,这也都是可以的啊好了,呃,这是find和FIND2它们俩之间的一个区别啊来我们看着啊看我把上面的个规则稍微改一下啊,它是按照正则表达式规则的规则,在字块中匹配所有符合规则的元素啊嗯,上面是返回列表,下面呢是返回一个迭代性,当后看你个人习惯使啊,你哪用哪一个都可以啊,那你用这个叫什么泛艾或泛奥,OK啊好,那么接下来还有一个这个萨人数萨函数呢,是在这个他呢是是正则,嗯,它是做一个叫什么呢?替换功能啊,这些都是搜索查找啊,这个是做完成一个替换,这个搜索替换啊替换的功能,嗯,那是这样的,就是说按照正则表达示规则,按照按照正则啊,表达式的规则啊,规则在字符串中,是在字符串中找到,找到需要。
03:12
找到需要被替换啊,被替换的啊,字符啊字符字符啊,然后呢,之后呢,第二个参数呢,就是它还有一个参数啊,找到之后呢,去替换到,呃,我看一下啊,按照正则表达式规则,在字符串中找到需要被替换的字符和字符串啊,应该说是字符串,然后完成一个一个替换啊一个替换,它这个是怎么使用的呢?就是这里边呢,它要要求有这么两个参数,我们来看一下哈,这个re.sub里边呢要求的参数,这么说吧,啊这么写吧,这个参数要求啊这位写再写在这儿啊参数。这个I点里边呢,啊,要求的这个第一个参数是叫de啊啊pattern pattern指能什么是正则表示规的正则表达式啊,规则规则啊,然后去这个叫什么啊,这个是匹配啊匹配这个叫需要被替换的字符串啊替换的字符串啊然后呢,它还有第二个参数啊,第二个参数叫re p,嗯叫re PL啊re PL,那么这个函数这个这个参数占面呢,它是呃,这个替换啊替换。
04:19
后的啊,字符串就是你准备把上面那个字块替换成什么什么结果啊,然后呢,还有第三个数SR啊实际啊,实际是就是被替换的,被替换的原始啊,原始字符画原始啊字符串啊就这样的一个特点啊好,这是我们当前的这么几个函数,先给大家呢去介绍一下,那么接下来呢,我们先看一下这个这这几个函数它的一个使用啊,Find和find呢啊都是做搜索来来使用,那我们来看一看啊,首先第一步啊inportt。我这个又出问题了吗?一模块。啊,这个又出问题了,IPT,嗯,模块。
05:00
来,我把它关掉啊。首先打开这个,不知道为什么它总是偶尔啊,偶发现他啊,真的是很偶然,他有时候好使,有时候不好使,就特别奇怪会出现这个问题,我不知道各位小伙伴有没有遇到过,我在以前的过程当中也没有遇到过这样的问题啊。嗯。这个应该还行,看着应该还行啊,来我们实验一下啊,来往下往下写一下啊呃,这里边是第一步啊,先导入我们的一个模块啊,导入我们的正则模块,导入正则模块以后呢,我们接下来做什么呢?啊,接下来呢,去定义这一个字块啊,定义一个字块,比如说YS等于一个。I老YOU1好,然后中间呢,我写个521。啊,这个后面呢。写个511。抄吧啊,这个511啊,就这一个内容啊,好是这样的哈,我现在的任务呢,就是要把当前的这个支付串当中的所有数字啊全部都找出来啊,所有的数字全部找出来就是啊,这个先写一下啊,定义支块定支块,那我们来看一下我们二和的它的一个使用啊好在里边呢,首先你去定一个规则是吧,那我在这里呢,定义小号一解啊,然后我们的一个杠子表是对的,那规则里边呢,是一个引号,然后呢去写内容,行,那么我们刚之前跟大家说过啊,一个数字代表,用这个杠地代表,一个数字用一个杠D代表,那么如果它是比如说这个数字,它它能匹配到几个啊,就是如果用我们的发到奥的结果的话,匹配出来六个元素就是五是一个,二是一个一是一个,然后五是一个一是一个,一是一个啊,那就是这样的一个结果啊,然后呢,我们来看一下啊,啊,这是表达式正则达式,这是定义正则表达式啊,那么之后呢,我们看一下啊调用啊调函数函数调用调用这样的话,它才会有一些结果给我们反馈啊。
06:42
我们的模用我们当前当前的然一是正则二个的S。来看我们上的结果,来的结果啊。来右键运行我们当前的脚本,看一下它返回的是5215511对不对,也就是说把每一个数字当成了一个匹配单元,然后去符合,我去寻找我们符合要求的数字对吧?好,那现在是这样的哈,我想把比如说一组数字,一组就是连续的一组数字啊,然后放到一起作为我们的一个叫什么啊,作为我们的一个结果,那这样的话怎么做的啊,实际上我可以再就一啊,简单的写就是一个画括三,这个画块三什么意思,表示前面的表达式要执行三次啊,而且是连续的,那就证明是杠D要有三个,那也就说有三个数字算作一组对不对?好,那我们来看一下结果运行交的兄,你看看是521511对不对啊,就这样的一个规则啊对,呃,关于详细的正则表达式的规则应该如何去写呢?后面我会详细给大家介绍啊,我们只是在这里呢,先给大家去看,认识一下我们当前的这个各个函数,它的一个使用,好,那么大家注意看啊,这个函数。
07:44
调用完这个FIND2以后呢,它返回的结果是一个列表,那么如果他没有找到呢,比如说我要找连续四个啊的数字,那他没有找到,没有找到之后返回一个控制列表啊,没有找到以后呢,返回一个控制列表,这是我们当前FIND2,它当前的一个这个返回结果啊好,那么同样的啊,同样的这个证啊是我们使用我们当前的R点啊点find艾啊find艾啊来使用一下find,那么第一个呢,也是我们当前的正治两个字,第二个呢,是我们的字符串是吧?YS,那么我们看一下它的结果啊,当然了,先上面商成三的啊来运行当前脚本中力看它说返回了一个什么,返回了一个叫艾,艾是我们的一个叫什么叫做迭代器啊,迭代器,那么这个迭代器我们可以怎么使用呢?啊,我们可以这样做啊,历史的括号。
08:26
把我们的RS放进去,然后呢,之后呢,我们去看print的结果,Print的结果来运行,我们到你这看一看,看哪看哪看哪,这是一个模式,这是一个模式,它是不是有有几个就返回几个啊,有几个就返回几个,好那么拿到这个结果以后,你想获取它里边的,比如说获取它的盘,就是它的那个叫坐标范围对不对,或者是获取,呃,获取它所匹配到的那个支符号啊,都可以使用那个,比如说点SPA或者是点那个group方式来获取到这个结果,对不对啊,那这样的话啊,它他们俩之间就存在于这个区别啊,存在于这个区别,好了,这是当前的这个操作啊,他们反回的结果不一样,好,那现在是这样的啊,我现在有一个新的需求是什么呢?是找到,是找到,找到这个数字,数字换替换成啊替换成啊替换成什么呢?啊,替换成其他的啊,替换成其他啊,那我这里时候呢,就重新定义啊而已,诶这不用定义了,这放D就可以对吧?啊这是找到数字了对吧?好那我这样做啊好我们看一下啊,我用re点调用大部方法,那么第一个呢,是我们能正到两次,你要找谁对吧?好re第二个。
09:26
算成什么东西,我替换成大写的三个A可以吧,啊替换成大写的三个A好,然后第三个呢,是你在哪个字符串里边去完成替换,所以这个地方呢,写Y还是T2,那么之后呢,替换完成以后,我们来看一下它的结果,而颜色返回的结果啊,来把这个结果给打印出来。把上面的个换到上啊,放到往上走的来运行我们当前的脚本走,你看看看看看L是不是里边的数字都换成了主块啊,都换成了字块啊,就这样的一个效果啊,这这个S就专门做这样的一个替换啊替换功能好,那这就是我们当前的一些呃,常用的函数吧,啊常用的函数,然后呢,嗯,除了这个以外呢,你还可以有一个方法,就是呃,还有一个函数,我们在这里提前说一下,先说一下啊呃,这个函数呢,叫做compar c compar Co啊AR这个这东西吗?它是专门去定义啊,定义正策表达字的这个模式啊,专门定义啊这个模式的定义我们看一下,打开这个,我们到这个Python的官方文档里边看一下,这个官方文档对它的一个定义和解释啊,说明啊,这个函数我们在后期也呃用它用不用其实都行啊,不过就我们在这里遇到了,就提一下大家看一下我们当前的。
10:32
建立中文,然后找到呃标准库参考,然后再找我们文本处理,Re,正则啊,再往下一点啊,再往下点正则表达式语法,然后再往后往后往后去找这个函数啊。没写,应该得有吧。我记得好像看到了。SOS。没有应该啊,来CTRLF搜一下,咱们那个叫c com。
11:05
P啊,看这看这啊,这里有一个啊,就这就这,它是将正则表达式的样式编译为一个正则表达式对象,也就是叫正则对象,可以用于匹配通过这个对象的方法啊,Max设置以及其他的一些操作,那什么意思呢?就是你可以把规则单独定义,把正则表达式直接编译为一个正则表达式的对象,也就说是这个意思,它可以直接定义啊,但这里吧,这么写吧啊,可以直接直接将正则正则。表正叫正则表达式定义为定义为啊正则正则对象啊,正则对象啊,然后呢啊使用正则对象直接操作,使用正则对象啊直接操作啊直接操作什么意思呢?就这样啊。我们在使用这个函数的时候呢,呃,比如说这样吧,我我我把它们去去定义一个这样的方法,我们来给大家看一看啊,就是正常情况下,你看我们如果想使用的话,我们是不是先定义正则,然后调用这个方法对不对,Find off find还是设置,还是ma方法还是S等等,都都需要调用,对不对,好,那现在是这样的啊,我直接呢,使用咱们当前的这个函数啊,当前的这个函数,然后呢,对这个里边的内容呢,直接做一个操作,什么意思呢?就我在这个地方呢,呃,用咱们的当前的这个函数啊,去做一个操作,那叫reg,直接等于我们当前的叫re,点上我们当前这个方法啊Co,然后在这里边呢,把我们当前的这个正值表达式放进去,我刚才写的是杠D括号三对不对,杠D括括号三是不是这样写的好,写完以后啊,直接后面操作的话,我们就可以这样做啊,Res等于我们reg直接点设或啊或者是ma或者是find或者其他方法啊,那之后我们就可以直接这样操作来看一下re运行当前的脚本,总理翻的哦哦,他还少一个三数啊,还少一个30,就我们当前的一个。
12:46
当前的一个字符串我还没给是吧,Rg.find的啊,我们当前的ST r ing等于我们的YS条,来看一下这样写运行大下吧,看到看到看正常来讲,你看上面的这个放大,放大二正常来讲是不是第一个参数和放大X条他们都一样,都要把正值X传进去,就你的规则传进去对不对,好,然后再传字符块对不对,好,我现在这传的时候,我直接只传字符块,这个是关键字传传,呃,这个叫关键字参数传三对不对,然后前面的话,这把正则表达是直接是实例化成为了一个对象啊,就是直接定义叫直接定义啊,正则表达式对象,正则表达式对象啊对象,然后呢,之后呢是使,然后呢,再直接就是直接使用啊,使用创建的正则对象,正则对象去调用对应的啊,对应的方法或函数啊,或函数啊函数来完成这个操作,这样的话你就不用再写正则,这样的话就是省略了写正则,比如说这个小伙伴可能看不明白,说我这么写的好处是什么呢?啊,好是什么,我就说我为什么要这么做啊,这上当我们匹配一个大量数据的时候,这个方式就有体现出来。
13:47
啊,这个方式,呃,就这么说吧,如果我们匹配的一个结果是这样的,好,我在这里定义一个例子啊,写一个例子啊,这个是中号啊,中号假设这里边啊是I哇you。啊,我把它复制一遍啊,来重你重你重你好,我要的是什么?我要的是匹配当中的love,匹配这个内容当中的love啊,或者说哎,中间有一个五。
14:11
一二。还有个521。二哥345。还有个543啊,就这个东西,我要这个字符片当中的这个数字,你怎么匹配怎么匹配啊,如果按照我们原来的规则是这样的,我们应该先先把这个啊这个LI2先把当前我们定义的这个量变量这个列表,然后做一个循环对不对?循环完之后干什么呢?我们应该去写正能表达式对不对,所以之前的话是这样写的,RG等于等于我们当前的哎杠D-D括号,然后呢,写个三对吧,然后呢,再用re模块调用,比如说比如说用那个别用设置了,用呃用用设置吧,用设置方法啊举个例子啊,用设置方法的话,这里边呢,呃,它第一个参数是我们的reg对吧,然后第二个参数是我们的谁啊,是我们的啊I当前这个数据对吧,然后呢,它返回一个结果是不是res等它,那么之后呢,我们用这个res来获取我们当前的结果,res.res.group g对吧?适这样的方式来进行获取,来运行当前角度看一下啊,这样的结果是不512521345543是不是都获取了对吧?好,但是是这样的,注意看在我们循环列表当中就是这样处理,有没有问题啊,没有问题啊,没有问题就是我们在调用。
15:17
屏况当中去调用了re点设置方法,然后呢,每次都传了这个正则表达式对吧?那我们来看一下啊,这个R点设置方法,它做了什么操作,来注意下re点设置方法,第一个参数正则,第二个参数是字块,第三个是模式啊模式我们暂时先不管啊,来注意看它干什么。他调了一个叫下线comp正方法,然后把谁把这个正则和和他的这个叫呃模式传进去了,然后再调了设置,也就是说正常情况下他都是先实例化一个正则表达式的对象,然后再去调设置方法。所以说就是你你在使用的这个过程当中,它也在不停的调这个嗯,Compare这个方法,所以这个时候呢,你可以怎么来,你可以把这个代码呢,做一个简化,怎么简化呢?是这样的,你在上面直接把这个reg直接定义完,就是com,然后嗯,这个写上咱们当前的正表示,就当B括号括号三啊这样的话,正则是不是就定义完了,定义完以后里面用的时候可以直接怎么用呢?就res直接等于我们reg点上S。
16:10
SESEA。RCH啊设置方法,然后呢,把我们的这个叫什么,把我们的这个叫字符上给传进去啊,然后呢,做完事了,点上一个GGRO括号来看看面的结果这S。运行呢。嗯,哪里有错。C20。哦,Sorry,前面这个位应该是re去调用啊对没他说没有定义啊对来看那看那是不是一样的结果,对就是你可以直接大小就不用再在里边再去定义规则,再再去创建对象,然后再去用对象调动它啊这样的话就很麻烦了,这样的话你就会频繁的创建对象,但是在外边呢,你直直接就只创建了一个对象,仅此而已啊,仅此而已就创建了一个对象,所以这个时候呢,对象的规则是就是你使用的对象同一个就避免嗯多创建,创建多的对象,这个时候就他在什么时候会体现出来呢?就大家可能还有点感觉不出来,就是当你爬取的这个,呃,这个数据量就是大数据量的这个数据提取,到时候啊,大数据量的数据提取,你规则是相同的一个对吧,但是呢,你这个支串有很多个,你需要循环便利,然后呢,如果在循环便利当中去创建对象,那显然这个在内存和资源耗费上都是比较浪费的,所以这整体来说,这个comp可以将我们的这个性能提高啊,尽量避免创建的这个呃,更多的这个对象来完成我们当年的一个操作,好了,这是我们当年啊,这节课给大家去讲解的这么几个函数啊,这么几个函数它的一个方法和使用,那么基本上啊,掌握这么多函数以后呢,在后面的过程当中啊,我们去呃使。
17:33
从正则匹配我们的内容的时候啊,大家能够掌握的更好更清楚,嗯好了,呃,那这节课我们就先到这里啊,各位小伙伴呢,在课下呢,把这个内容呢好好的做一个练习,那么争取呢,把这个内容呢,一定要好把它掌握住,好了从下节课开始呢,我们重点呢,给大家去讲解一下我们正德表达式的规则定义啊,都有哪些组成,如何去表达我们的规则,它每一个符号都代表什么意思啊,这个就是我们的另外一个重点,好了,那么这节课我们就到这里,下节课再见。
我来说两句