上次的爬虫最终获取了马蜂窝旅行评论页面的全部内容,其实很多都是无用信息,我们要进行筛选清洗,这就用到了正则表达式,在写爬虫后续之前先大概搞一下正则……

先上代码吧,今天先搞一小部分:

import re

print(re.match('you','you are my sunshine'))

print(re.match('you','you are my sunshine').span())

print(re.match('my','you are my sunshine'))

print(re.search('you','you are my sunshine').span())

print(re.search('my','you are my sunshine').span())

love='you are my sunshine'

pat=re.match(r'(.*) are (.*?) .*',love)

if pat:

print('获取的全部字符序列为:'+str(pat.group()))

print('获取的第一个分组为:'+str(pat.group(1)))

print('获取的第二个分组为:'+str(pat.group(2)))

print('获取的全部分组为:'+str(pat.groups()))

else:

print('没有匹配内容!')

rep=re.sub(r'sun.*$','life',love)

print('字符串更新为:'+str(rep))

首先导入模块re,该模块包含所有的正则实现的功能,很好用~~

接下里五大行测试一下两个方法match()和search(),前者只匹配字符串的开头,而后者匹配整个字符串,也就是说如果你给出的正则表达式在一开始就不满足字符串那match就直接返回none,但search则会搜寻整个字符串,知道找到匹配内容;span()方法返回匹配字符串的区间,左闭右开,如(2,5)表示所匹配的字符串中的字符在原字符串中的下标为2,3,4。

看一下结果:

第一条为match函数返回的信息,包括匹配区间、匹配字符等;第三条为None,也证实了两个方法的区别。

接下来用到了正规的正则表达式,(.*)为一个分组,也是我们所需的内容,'.'可以匹配除换行符之外的所有字符,‘*’可以匹配0至无限长度的字符;后面没有()的.*表示的是匹配后面的所有字符,这一部分我们不关心是什么;还有一个就是‘?’,她使得我们去尽量少的字符,这一块后边可以演示一下。

group()方法返回我们所获取的所有字符串,它是以元组的形式返回的,所有和字符串连接需要转化一下,()中的1和2表示我们需要的第一个和第二个分组,也就是正则表达式中的()内容,groups返回所有分组,这个区别一下group,看结果:

很清晰吧。。注意一下第一条和第四条。。

最后是sub()函数,它的功能是用某一确定字符串替换匹配内容,该例中我们匹配的是以sun开头的字符串,‘$’的意思是以前面的字符结尾,在这里就表示sun后面的所有字符,然后把该部分用life替换掉,结果为:

由于sunshine是最后一个单词,所以不是那么明显,我们将‘sun’改为‘my’,看下结果:

没毛病。。匹配了my后面的所有字符。。

还有一点就是前面说的正则中的‘?’,我们将上面的正则表达式改一下:pat=re.match(r'(.*) are (.*?)',love),看一下结果:

再改一下:pat=re.match(r'(.*) are (.*)',love),看下结果:

是不是发现点什么,前者匹配为空,后者匹配了are后面的所有内容,这一点也是之前爬虫时数据紊乱的原因所在,找个时间好好聊聊这一块~~~我现在在想前者匹配的是不是一个空格啊,或者真的就是空,尽量少嘛。。

python中的正则表达式是干嘛的_操作python中的正则表达式(上)相关推荐

  1. python中比较重要的几个函数_【python】python re模块中几个比较重要的函数

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=22920230&id=3389387 re.match re.m ...

  2. python中怎么统计英文字符的个数_【Python练习1】统计一串字符中英文字母、空格、数字和其他字符的个数...

    练习思路: 1.输入一串字符 2.筛选出字符中的英文字母并统计 3.筛选出字符中的空格并统计 4.筛选出字符中的数字并统计 5.筛选出字符中的其他字符并统计 代码实现: def msg(s): abc ...

  3. python定义方法self会被当作变量_为什么Python必须在方法定义和调用中显式使用“self”?...

    为什么Python必须在方法定义和调用中显示使用"self"? 这个想法借鉴了 Modula-3 语言.出于多种原因它被证明是非常有用的. 首先,更明显的显示出,使用的是方法或实例 ...

  4. 下列选项中不属于python循环语句的是哪一项_下列选项中,不属于字典操作的方法是哪一项?_学小易找答案...

    [简答题]字符串有哪几种表现形式? [简答题]简述Python程序的执行过程. [单选题]Python 语句x='char';y=2,print(x+y)输出的结果是哪一项?() [编程题]输入三角形 ...

  5. python中以下关于列表描述错误的_在Python中,以下关于函数的描述错误的是哪一项?...

    [判断题]Python内置函数len____可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. [判断题]Python内置函数max____用来返回序列中的最大元素. [判断题]Py ...

  6. python文件的打开模式有几种_以下选项中,不是Python打开文件模式的是( )_学小易找答案...

    [单选题]下面代码的输出结果是( ) x=12.34+0j print(type(x)) [单选题]在本实验中为什么不使用草酸钠,而使用草酸来制备草酸亚铁? [单选题]减压抽滤时,下述操作不正确的是 ...

  7. python请输入星期几的第一个字母来判断_【Python 实例】面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母...

    [Python 实例]面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母 题目: 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一 ...

  8. C++中如何控制语句只执行一次_【Python基础(七)】逻辑控制

    本节将会讲到在编程中个人认为最重要的知识之一,逻辑控制.与其说是介绍语法,不如说是阐述看待事物的方法.我们身处的世界,每天有海量信息向我们袭来,每天我们要处理若干的事件,对于每一个事件,它都由若干个小 ...

  9. python只能在循环体内使用break语句_在Python的循环体中使用else语句的方法

    本文讨论Python的for-else和while-else语法,这是Python中最不常用.最为误解的语法特性之一. Python中的for.while循环都有一个可选的else分支(类似if语句和 ...

最新文章

  1. asp打印html,asp.net教程之利用ASP在浏览器上打印输出
  2. 关于比特币现金的一些误区
  3. python 实现str list array tuple的互换以及join函数的使用
  4. 转基因大豆提高大豆油脂产量80%
  5. 影子场vs.属性访问器接口第2轮
  6. linux字体如何删除不了,如何彻底替换Ubuntu下Chrome字体(清除楷体字)
  7. 12.04 安装svn
  8. 总纲篇:产品结构设计指导VII(本博客指引章节)
  9. 百科知识:呼叫转移与呼叫前转
  10. 泰坦尼克号生还者预测
  11. 思科网络安全 第四章测验答案
  12. android 拍照,图库,相册,上传
  13. Windows10家庭版怎么设置默认输入法
  14. tablueau地图标记圆形_多点钉图标记-简单易用的地图位置标记标注工具
  15. vscode配置基于maven的Javaweb开发
  16. 绝佳表现电商各类促销活动插画素材|玩转大促购物节
  17. ☀️光天化日学C语言☀️(07)- ASCII码 | 来,跟我念:阿斯克二马
  18. 【pwnable.kr】leg
  19. linux服务器黑屏_IBM服务器安装、进入Linux系统时显示花屏、黑屏的解决办法
  20. 毕业设计-基于微信小程序的实验室仪器设备管理系统

热门文章

  1. Spring中基于注解@AspectJ的AOP实现
  2. 在SAP云平台上部署和运行Docker应用
  3. HANA report transaction data retrieve in QHD/504
  4. ABAP和Java里的单例模式攻击
  5. How org unit id and type is determined in Genil
  6. SAP ui5 resize handler
  7. COM_TEXT_TIMESTAMP_SET
  8. 2019年6月SAP发布的未来ABAP平台的发展方向
  9. 如何对SAP Leonardo上的机器学习模型进行重新训练
  10. SAP ABAP bcset激活时,关联的数据库表条目是如何插入的