python程序员留下的学习笔记,python编程学习者的福音

大家在接触python之前可能都是通过爬虫从而了解的python,而python的方向非常多。但是要想写爬虫的话,正则表达式是必须学会的,所以今天给大家带来一位大牛留下的正则表达式的笔记!希望大家能有所收货,序员不是一两天就能到达那种高度的,是写出来的,多思考多变化。代码多敲就熟练了,不管天赋怎样,勤能补拙嘛,大家可以加我python交流群:58937142,里面新手资料,框架,爬虫。web都有,都是可以免费获取的,还有大牛解答各种难题,不失为是一个学习的好地方,小编在这里邀请大家加入我的大家庭。欢迎你的到来。一起交流学习!共同进步!好了,马上给大家分享!

什么是正则表达式

说白了,正则表达式就是描述我们需要提取的那部分信息的规则的工具。

举个栗子,比如,我们想要提取 \’Stay hungry, 123 stay foolish!\’中的那部分数字,可以使用 (d ) 这个式子来表达。

学习正则表达式

正则表达式的学习,差不多就是在学习它的元字符:

翻出了多年18k程序员留下的学习笔记,确实比我的全面多了!

说到这里给大家推荐正则表达式的书。

翻出了多年18k程序员留下的学习笔记,确实比我的全面多了!

使用re库

re 使 Python 语言拥有全部的正则表达式功能,那么我们就使用re库来演示一波!

re.match函数

re.match 尝试 从字符串的起始位置匹配一个模式 ,如果不是起始位置匹配成功的话,match()就返回None。

函数语法:

re.match(pattern, string, flags=0)

  • pattern 匹配的正则表达式
  • string 要匹配的字符串。
  • flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

  • group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
  • groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

实例

翻出了多年18k程序员留下的学习笔记,确实比我的全面多了!

re.search函数

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:

re.search(pattern, string, flags=0)

  • pattern 匹配的正则表达式
  • string 要匹配的字符串。
  • flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

  • group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
  • groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

实例

翻出了多年18k程序员留下的学习笔记,确实比我的全面多了!

标志位

正则表达式可以包含一些可选标志修饰符来控制匹配的模式, 也就是在前面提到的flags标志位的可选参数 。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:

翻出了多年18k程序员留下的学习笔记,确实比我的全面多了!

re.compile函数

有时候,我们可能会在代码中大量重复使用相同的模式,这时我们可以将 正则字符串编译成正则对象,以便于复用该匹配模式 。

翻出了多年18k程序员留下的学习笔记,确实比我的全面多了!

一次编译,到处使用!

当然,re库中还有好多其他内容,

爬取糗事百科首页

首先,来到糗事百科,然后审查一下元素,如下图:

翻出了多年18k程序员留下的学习笔记,确实比我的全面多了!

定位源码

我们可以发现,每个段子似乎都在一个 

……

 标签中,于是,有了一个大胆的想法。

我们使用urllib库获取到网页源码字符串后,就可以使用刚学的正则表达式把段子提取出来了。

可是,段子这么多,之前学过的各种函数 re.search 、 re.match 什么的,只可以提取到一个匹配结果呀。没错,于是我们使用 re.findall ,可以提出到所有的匹配结果。

问题都差不多解决了,下面开始动手:

翻出了多年18k程序员留下的学习笔记,确实比我的全面多了!

当然,你可以给上面的代码进行修改,比如加入异常处理,更好的组织等等。

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/4964.html

发表评论

登录后才能评论