python中的正则表达式是干嘛的_操作python中的正则表达式(上)
上次的爬虫最终获取了马蜂窝旅行评论页面的全部内容,其实很多都是无用信息,我们要进行筛选清洗,这就用到了正则表达式,在写爬虫后续之前先大概搞一下正则……
先上代码吧,今天先搞一小部分:
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中的正则表达式(上)相关推荐
- python中比较重要的几个函数_【python】python re模块中几个比较重要的函数
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=22920230&id=3389387 re.match re.m ...
- python中怎么统计英文字符的个数_【Python练习1】统计一串字符中英文字母、空格、数字和其他字符的个数...
练习思路: 1.输入一串字符 2.筛选出字符中的英文字母并统计 3.筛选出字符中的空格并统计 4.筛选出字符中的数字并统计 5.筛选出字符中的其他字符并统计 代码实现: def msg(s): abc ...
- python定义方法self会被当作变量_为什么Python必须在方法定义和调用中显式使用“self”?...
为什么Python必须在方法定义和调用中显示使用"self"? 这个想法借鉴了 Modula-3 语言.出于多种原因它被证明是非常有用的. 首先,更明显的显示出,使用的是方法或实例 ...
- 下列选项中不属于python循环语句的是哪一项_下列选项中,不属于字典操作的方法是哪一项?_学小易找答案...
[简答题]字符串有哪几种表现形式? [简答题]简述Python程序的执行过程. [单选题]Python 语句x='char';y=2,print(x+y)输出的结果是哪一项?() [编程题]输入三角形 ...
- python中以下关于列表描述错误的_在Python中,以下关于函数的描述错误的是哪一项?...
[判断题]Python内置函数len____可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. [判断题]Python内置函数max____用来返回序列中的最大元素. [判断题]Py ...
- python文件的打开模式有几种_以下选项中,不是Python打开文件模式的是( )_学小易找答案...
[单选题]下面代码的输出结果是( ) x=12.34+0j print(type(x)) [单选题]在本实验中为什么不使用草酸钠,而使用草酸来制备草酸亚铁? [单选题]减压抽滤时,下述操作不正确的是 ...
- python请输入星期几的第一个字母来判断_【Python 实例】面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母...
[Python 实例]面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母 题目: 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一 ...
- C++中如何控制语句只执行一次_【Python基础(七)】逻辑控制
本节将会讲到在编程中个人认为最重要的知识之一,逻辑控制.与其说是介绍语法,不如说是阐述看待事物的方法.我们身处的世界,每天有海量信息向我们袭来,每天我们要处理若干的事件,对于每一个事件,它都由若干个小 ...
- python只能在循环体内使用break语句_在Python的循环体中使用else语句的方法
本文讨论Python的for-else和while-else语法,这是Python中最不常用.最为误解的语法特性之一. Python中的for.while循环都有一个可选的else分支(类似if语句和 ...
最新文章
- asp打印html,asp.net教程之利用ASP在浏览器上打印输出
- 关于比特币现金的一些误区
- python 实现str list array tuple的互换以及join函数的使用
- 转基因大豆提高大豆油脂产量80%
- 影子场vs.属性访问器接口第2轮
- linux字体如何删除不了,如何彻底替换Ubuntu下Chrome字体(清除楷体字)
- 12.04 安装svn
- 总纲篇:产品结构设计指导VII(本博客指引章节)
- 百科知识:呼叫转移与呼叫前转
- 泰坦尼克号生还者预测
- 思科网络安全 第四章测验答案
- android 拍照,图库,相册,上传
- Windows10家庭版怎么设置默认输入法
- tablueau地图标记圆形_多点钉图标记-简单易用的地图位置标记标注工具
- vscode配置基于maven的Javaweb开发
- 绝佳表现电商各类促销活动插画素材|玩转大促购物节
- ☀️光天化日学C语言☀️(07)- ASCII码 | 来,跟我念:阿斯克二马
- 【pwnable.kr】leg
- linux服务器黑屏_IBM服务器安装、进入Linux系统时显示花屏、黑屏的解决办法
- 毕业设计-基于微信小程序的实验室仪器设备管理系统
热门文章
- Spring中基于注解@AspectJ的AOP实现
- 在SAP云平台上部署和运行Docker应用
- HANA report transaction data retrieve in QHD/504
- ABAP和Java里的单例模式攻击
- How org unit id and type is determined in Genil
- SAP ui5 resize handler
- COM_TEXT_TIMESTAMP_SET
- 2019年6月SAP发布的未来ABAP平台的发展方向
- 如何对SAP Leonardo上的机器学习模型进行重新训练
- SAP ABAP bcset激活时,关联的数据库表条目是如何插入的