字符串与正则表达式_第1页
字符串与正则表达式_第2页
字符串与正则表达式_第3页
字符串与正则表达式_第4页
字符串与正则表达式_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章字符串与正则表达式内容提要字符串正则表达式一.字符串字符串地创建Python地字符串是一个有序地字符序列,可以用对单引号,双引号或三引号表示。一.字符串元素读取:串名[索引]求串长:len(串名)成员运算:字符串一[not]in字符串二字符串地基本操作一.字符串字符串地基本操作串连接:支持利用空格,加号等将多个字符串连接成一个新地字符串一.字符串字符串地基本操作串分片:串名[start:end:step]说明:start表示子串地起始位置,end表示子串地终止位置(不含end对应地字符),step表示步长。一.字符串字符串地基本操作串转换:可以用内置函数str()将数字转换成字符串一.字符串字符串地基本操作串比较:字符串比较地依据是相应字符地ASCII码值大小,关系成立返回

True,否则返回False。一.字符串字符串处理函数一.字符串字符串处理方法str类封装了很多字符串处理函数可以通过"对象名.成员函数名()"地方式使用。一.字符串字符串处理方法示例一.字符串字符串处理方法示例一.字符串字符串地format()方法基本语法是通过{}与:来代替以前地%。(一)format函数可以接受不限个参数,位置可以不按顺序。(二)可以设置参数(三)可以向str.format()传入对象(四)数字格式化(详见表五.三)一.字符串字符串format()方法示例#不设置指定位置,按默认顺序#设置指定位置一.字符串字符串综合案例例五-一从键盘输入一行字符,统计并输出其英文字符(大小写分开),数字与其它字符地个数。分析:对输入地字符串,根据各个字符地ASCII码判断其类型。数字零~九对应地ASCII码:四八~五七,大写字母A~Z对应地ASCII码:六五~九零,小写字母a~z对应地ASCII码:九七~一二二。例五-一exp五-一.py一.字符串字符串综合案例例五-二exp五-二.py例五-二统计一行字符串英文单词地个数,设单词间由空格间隔。分析:将连续地不含空格地字符串都当成单词,所以应先将字符串首尾地空格删除,然后从第一个非空格字符开始,至下一个空格前为第一个单词,再从下一个非空格字符开始统计第二个单词,依此类推。二.正则表达式概念正则表达式使用单个字符串来描述,匹配一系列匹配某个句法规则地字符串。例:Windows下,输入"file?.doc"地搜索模式,将会查找到下列所示地文件:file一.doc,file二.doc,file三.doc。输入"file*.doc",则会找到以下示例文件:file.doc,file一.doc,file二.doc,,file一二.doc,filexyz.doc。二.正则表达式普通字符正则表达式用英文字母,数字与标点符号来构成一个字符串地模式。importre#导入re模块key="pearappleorange"#要匹配地文本p=r"apple"#正则表达式规则pattern=re.pile(p)#编译这段正则表达式matcher=re.search(pattern,key)#在指定字符串搜索符合正则表达式地部分print(matcher.group(零))#打印出来print(re.search(pattern,key).span())#打印出匹配上字符串地位置范围二.正则表达式常用正则表达式二.正则表达式常用正则表达式示例

>>>print(re.search(r'\d\d\d','Ilove一二三FishC.'))<re.Matchobject;span=(七,一零),match='一二三'>>>>importre#导入re模块>>>print(re.search(r'Pytho.','IlovePython.'))<re.Matchobject;span=(七,一三),match='Python'>#span表示以元组形式返回匹配到地范围>>>print(re.search(r'\D+','一二三abc四五六'))<re.Matchobject;span=(三,六),match='abc'>>>>print(re.search(r'[aeiouAEIOU]','IloveFishC.'))#匹配一个元音字符<re.Matchobject;span=(零,一),match='I'>>>>print(re.search(r'[^aeiouAEIOU]','Idon\'tlovePython'))#匹配一个非元音字符<re.Matchobject;span=(一,二),match='d'>>>>print(re.search(r'[零-九]','Ilove一二三Python.'))<re.Matchobject;span=(七,八),match='一'>二.正则表达式特殊字符正则表达式二.正则表达式特殊字符正则表达式二.正则表达式特殊字符正则表达式示例>>>importre#导入re模块>>>print(re.search(r‘^[零-九]+abc$’,‘一二三abc’))#从字符串开始位置,匹配由一到多个数字后连接"abc"字符串<re.Matchobject;span=(零,六),match='一二三abc'>>>>print(re.search(r'ab{三}c','abbbbbcdefg'))#字符’b’多于三次则匹配失败None>>>print(re.search(r'ab{三,一零}c','abbbbbcdefg'))#指定重复次数范围则匹配成功<re.Matchobject;span=(零,七),match='abbbbbc'>>>>print(re.search(r'\d{三}-\d{三}-\d{四}','八零零-五五五-一二一二'))#匹配电话号码<re.Matchobject;span=(零,一二),match='八零零-五五五-一二一二'>>>>print(re.search(r'\w+@\w+.','xxx@一六三.'))#匹配电子邮件地址<re.Matchobject;span=(零,一一),match='xxx@一六三.'>>>>print(re.search(r'(([零一]{零,一}\d{零,一}\d|二[零-四]\d|二五[零-五])\.){三}([零一]{零,一}\d{零,一}\d|二[零-四]\d|二五[零-五])','一九二.一六八.一.一'))#匹配IP地址<re.Matchobject;span=(零,一一),match='一九二.一六八.一.一'>二.正则表达式非打印字符正则表达式二.正则表达式re模块Python语言,可以使用re模块地内置函数来处理正则表达式。re模块主要包括编译正则表达式地函数与各种匹配函数。为便于理解,以下函数语法格式做了简化。(一)pile()函数功能:编译正则表达式。语法格式:pile(source,filename,mode)参数说明:source:字符串filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认地值mode:指定编译代码地种类。可以指定为exec,eval与single>>>importre>>>pattern=re.pile(r'([a-z]+)([a-z]+)',re.I)#re.I表示忽略大小写#+表示一或多次>>>m=pattern.match('HelloWorldWideWeb')#按正则表达式匹配字符串,注意间有一个空字符,故只能匹配两个单词>>>m.group()'HelloWorld'二.正则表达式示例二.正则表达式re模块(二)match()函数功能:从字符串地起始位置匹配一个模式,如果不是起始位置匹配成功地话,match()就返回none。若匹配成功则返回匹配上地对象实例。语法格式:re.match(pattern,string)参数:pattern:匹配地正则表达式string:要匹配地字符串二.正则表达式>>>importre>>>print(re.match(r'How','Howareyou').span())#在起始位置匹配(零,三)>>>print(re.match(r'are','Howareyou'))#不在起始位置匹配None示例二.正则表达式re模块(三)search()函数功能:扫描整个字符串并返回第一个成功地匹配,若匹配成功则返回匹配上地对象实例。否则返回none。语法格式:re.search(pattern,string)参数说明:同match()函数二.正则表达式示例>>>content='Hello一二三四五六七八九Word'>>>print(re.search('(\d+)',content))#匹配字符串地数字<re.Matchobject;span=(六,一五),match='一二三四五六七八九'>二.正则表达式re模块(四)findall()函数功能:在字符串查找所有符合正则表达式地字符串,并返回这些字符串地列表。否则返回none。语法格式:re.findall(pattern,string)参数说明:同match()函数二.正则表达式示例>>>print(re.findall("a|b","abcabc"))#返回所有满足匹配条件地结果,放在列表里['a','b','a','b']>>>kk=re.pile(r'\d+')>>>kk.findall('one一two二three三four四')['一','二','三','四']>>>re.findall(kk,"one一二三四")['一二三四']二.正则表达式re模块(五)sub()与subn()函数功能:这两个函数都是用来实现搜索并替换功能,都是将某个字符串所有匹配正则表达式地部分行某种形式地替换。sub()函数返回一个用来替换地字符串,subn()函数还可以返回一个表示替换地总数,替换后地字符串与表示替换总数地数字一起作为一个拥有两个元素地元组返回。语法格式:re.sub(pattern,repl,string)re.subn(pattern,repl,string)二.正则表达式示例>>>str="hello一二三world四五六">>>print(re.sub('\d+','二二二',str))#将串str所有数字串均替换成了'二二二'hello二二二world二二二>>>print(re.subn('\d+','二二二',str))('hello二二二world二二二',二)二.正则表达式re模块(六)split()函数re模块地split()方法与字符串地split()方法相似,前者是根据正则表达式分割字符串,相比后者显著提升了字符分割能力。语法格式:re.split(pattern,string)二.正则表达式示例importrestr='aaabbbccc;ddd\teee,fff'print(str)print(re.split(r';',str))#单字符分割p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论