《大数据分析:基于Python》 课件 第9章 正则表达式与格式化输出 .pptx

《大数据分析:基于Python》 课件 第9章 正则表达式与格式化输出 .pptx

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;正则表达式通常被用来检索、替换那些匹配某个模式的文本,如查找和提取某个网页中所有的Email或者电话号码、网址等。

Python中正则表达式的模块为re,用importre导入。它是一种用来匹配字符串的强有力武器。其设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,就认为它“匹配”上了,否则该字符串就不合规。

如在网上填表时,经常需要填写手机号码,当只有输入正确的格式时才被接收,如第一位是1,总共11位数字,这就是用正则表达式去匹配数字。;9.1元字符

在python的正则模块里,一个数字可以用“\d”匹配;一个既可以是字母又可以是数字,则可以用“\w”匹配,如身份证的最后一位;“.”可以匹配任意字符。

先来看看如下的匹配模式。

00\d:可以匹配007,但无法匹配00A,也就是说’00’后面只能是数字;

\d\d\d:可以匹配010,只可匹配三位数字;

\w\w\d:可以匹配py3,前两位可以是数字或字母,但是第三位只能是数字,如a12、3a1、223,但不可以匹配y1w或者27f。

py.:可以匹配pyc、py2、py!等等,最后一位可以是任意的字符。

像上面这样“.”“\w”“\d”等有特殊用途、不代表其本身字符意义的符号称之为元字符。利用元字符进行组合可以匹配各种字符串。常用的元字符如下表9-1所示。;在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n~m个字符。

下面看一个复杂的例子:\d{3}\s+\d{3,8}。;[0-9a-zA-Z\_]可以匹配一个数字、字母或者下画线。

[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下画线组成的字符串,如a100,0_Z,Py3000等。

[a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下画线开头,后接任意个由一个数字、字母或者下画线组成的字符串,也就是Python合法的变量。

[a-zA-Z\_][0-9a-zA-Z\_]{0,19}更精确地限制了变量的长度是1~20个字符(前面1个字符+后面最多19个字符)。

A|B可以匹配A或B,所以(P|p)ython可以匹配Python或者python。

^表示行的开头,^\d表示必须以数字开头。

$表示行的结束,\d$表示必须以数字结束。

需要注意,py也可以匹配python,但是加上^py$就变成了整行匹配,就只能匹配py了。;如匹配文本“eamil120487362@1234”中的Email正则表达式,则匹配模式为:\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,4}\b,具体的表达式解析如下图.;9.2re模块及其函数

Python提供re模块,其包含所有正则表达式的功能,在使用时先使用importre导入。由于Python的字符串本身也用\转义,所以要特别注意。

s=ABC\\-001

正则表达式对应的字符串变成:ABC\-001。

因此强烈建议使用Python的r做前缀,这样就不用考虑转义的问题。

s=rABC\-001

正则表达式对应的字符串仍是:ABC\-001。;re.match()总是从字符串的开头位置开始查找匹配,并返回匹配到的字符串的match对象(匹配对象)class_sre.SRE_Match,如果不是在起始位置或者匹配不到,match()函数将返回None。

re.match()匹配成功返回的结果是match对象,有三部分,匹配的结果是第三部分match的值,第二部分表示匹配到的起止范围span,如In[2]返回的结果第二部分span=(0,9)。

也可直接使用group()方法直接返回匹配结果。;9.2.1分组

除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的即为要提取的分组(Group)。

例如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码。;如果正则表达式中定义了组,就可以在match对象上用group()方法提取子串。注意到group(0)是原始字符串,group(1)、group(2)……表示第1、2……个子串。提取子串非常有用,举例如下。;9.2.2切分字符串

用正则表达式切分字符串比用固定的字符更灵活,一般切分方法如下。;9.2.3re.search()函数

re.search()函数对整个字符串进行搜索匹配,返回第一个匹配到的字符串match对象。格式如下。

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

pattern:匹配模式,由pile获得。

string:被匹配的文本

您可能关注的文档

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档