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

下载本文档

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

文档简介

单元7字符串与正则表达式字符串是开发应用中常用的数据类型,字符串的处理是实际应用中经常面对的问题。Python提供了功能强大的字符串模块。正则表达式专门用于匹配应用中的数据,能够简化字符串的处理程序,Python提供了模块匹配正则表达式。7.1字符串Python中的字符串用于表示和存储文本。7.1.1字符串的表示方法单引号(’…’)双引号(“…”)三引号(’’’…’’’,”””…”””)7.1.2字符串的特征字符串构成包含数字、中文字符、特殊符号、控制字符等特征有序性:字符串中的字符与字符之间是有序的可重复:字符串中可以包含重复的字符7.2常见的字符串操作字符串是Python的一种基本类型,字符串的操作包括字符串的合并、截取、反转、查找、格式化等操作。7.2.1字符串的格式化Python提供了2种字符串的格式化功能。1.通过替代符格式化Python将若干值插入带有“%”标记的字符串中,从而可以动态地输出字符串。"%s"%str1或"%s%s"%(str1,str2)替代符替代符含义%c格式化字符及其ASCII码%s格式化字符串%d格式化整型%u格式化无符号整型%o格式化无符号八进制数%x格式化无符号十六进制数%X格式化无符号十六进制数(大写)%f格式化浮点数字,可指定小数点后的精度%e用科学计数法格式化浮点数%E作用同%e,用科学计数法格式化浮点数%g根据值的大小决定使用%f或%e%G作用同%g,根据值的大小决定使用%f或%e%p用十六进制数格式化变量的地址2.通过format()函数格式化使用str.format()"{}".format(str)或"{}{}".format(str1,str2)7.2.2字符串的对齐操作center():居中对齐ljust():左对齐rjust():右对齐使用format()函数实现{:^value}:居中对齐{:<value}:左对齐{:>value}:右对齐7.2.3字符串的转义符使用“\”作为转义字符转义字符含义\n换行\r回车\'单引号\"双引号\\反斜杠\a发出系统响铃声\b向后退一格\f换页\t水平制表符\v垂直制表符\o八进制数代表的字符\x十进制数代表的字符\000终止符,\000后的字符串全部忽略使用r或R来取消转义字符使用“+”连接不同的字符串7.2.4字符串的合并与类型有关“+”两侧都是字符串类型进行连接操作“+”两侧都是数字类型进行加法运算“+”两侧是不同的类型抛出异常7.2.5字符串的截取被截取的部分称为“子串”。通过索引获取子串通过切片获取子串使用函数split()来获取子串7.2.6字符串的比较使用“==”进行比较使用“!=”进行比较7.2.7字符串的反转字符串反转是指把字符串中最后一个字符移到字符串第一个位置,按照倒序的方式依次前移。反转方法通过索引实现字符串的反转通过range()进行循环7.2.8字符串的查找和替换使用函数find()实现find(sub,start,end)使用函数rfind()实现从字符串的尾部开始查找子串7.3正则表达式在处理字符串的时候,经常需要查找符合某些规则的字符串,这时就需要用到正则表达式。在Python中,主要使用re模块进行正则表达式的操作。re模块提供了Perl风格的正则表达式,使正则表达式具有更好的可读性,以及更强的功能。7.3.1正则表达式的基本元字符一个正则表达式是由字母、数字、汉字和具有特定含义的字符(括号、星号、问号等)组成。使用元字符用以匹配字符串的各种可能的情况元字符及含义元字符含义.匹配除换行符以外的任何单个字符,如“r.d”会匹配“red”,“rd”等,但不会匹配“read”。*匹配位于*之前的0个或多个字符,如“r*ed”会匹配“ed”,“rred”,“rrred”,“red”等。+匹配位于+之前的一个或多个字符,如“r+ed”会匹配“rred”,“rrred”,但不会匹配“ed”。|匹配位于|之前或者之后的字符,如“red|blue”会匹配“red”,“blue”^匹配字符串的开始$匹配字符串的结尾?匹配位于?之前的零个或一个字符,如“r?ed”会匹配“ed”,“red”等,但不会匹配“rrred”。\表示位于\之后的为转义字符[]匹配位于[]中的任何一个字符,如r[ae]d,会匹配“rad”以及“red”等。[^m]匹配除m以外的字符串()将位于()内的内容当作一个整体{}按{}中的次数进行匹配\b匹配单词的开始或结束\B匹配不是单词开始和结束的位置\d匹配数字\D匹配非数字的字符\s匹配空白字符\S匹配不是空白的字符\w匹配字母、数字、下划线、汉字\W匹配不是字母、数字、下划线、汉字元字符还可以组合起来使用组合元字符含义.*可以匹配任意个字符,如“r.*d”会匹配“rd”、“red”、“read”等。.+可以匹配任意的一个或者多个字符,如“r.+d”会匹配“red”、“read”,但不会匹配“rd”。.?可以匹配任意的零个或一个字符,如“r.?d”会匹配“rd”、“red”,但不会匹配“read”7.3.2常用正则表达式分析使用正则表达式可以简化程序设计。可以区分联通和移动号码7.4支持正则表达式的re模块re模块提供了一些根据正则表达式进行查找、替换、分隔字符串的函数,这些函数使用一个正则表达式作为第一个参数。re模块的常用函数及含义函数含义findall(pattern,string,flags=0)根据pattern在string中匹配字符串。如果匹配成功,返回包含匹配结果的列表;否则,返回空列表。当pattern中有分组时,返回包含多个元组的列表,每个元组对应1个分组。Flags表示规则选项,规则选项用于辅助匹配。sub(pattern,repl,string,count=0)根据指定的正则表达式,替换源字符串中的子串。pattern是一个正则表达式,repl是用于替换的字符串,string是源字符串。如果count等于0,则返回string中匹配的所有结果;如果count大于0,则返回前count个匹配结果subn(pattern,repl,string,count=0)作用和sub()相同,返回一个二元的元组。第1个元素是替换结果,第2个元素是替换的次数match(pattern,string,flags=0)根据pattern从string的头部开始匹配字符串,只返回第1次匹配成功的对象;否则,返回Nonesearch(pattern,string,flags=0)根据pattern在string中匹配字符串,只返回第1次匹配成功的对象。如果匹配失败,返回Nonecompile(pattern,flags=0)编译正则表达式pattern,返回1个Pattern对象split(pattern,string,maxsplit=0)根据pattern分隔string,maxsplit表示最大的分隔数escape(pattern)匹配字符串中的特殊字符,如*、+、?等re模块的规则选项规则选项含义I或IGNORECASE忽略大小写L或LOCALE字符集本地化,用于多语言环境M或MULTILINE多行匹配S或DOTALL使“.”匹配包括“\n”在内的所有字符X或VERBOSE忽略正则表达式中的空白、换行,方便添加注释U或UNICODE\w、\W、\b、\B、\d、\D、\s和\S都将使用Unicodere模块的一些函数中都有一个flags参数,该参数用于设置匹配的附加选项7.4.1匹配字符串使用match()函数用于从字符串的开始处进行匹配,如果在起始位置匹配成功,则返回Match对象,否则,返回None使用search()函数用于在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回Match对象,否则,返回None使用findall()函数用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回。如果匹配成功,则返回包含匹配结构的列表,否则返回空列表。7.4.2替换字符串re模块提供了sub()函数用于替换在字符串中符合正则表达式的内容,它返回替换后的字符串。re.sub(pattern,repl,string[,count],[,flags])7.4.3分割字符串re模块提供了split()函数用于分割字符串,它返回分割后的字符串列表。re.split(pattern,string[,maxsplit=0],[,flags])7.5编译生成正则表达式对象使用pile()函数将正则表达式编译生成一个RegexObject对象。该对象拥有一系列方法用于查找、替换或分隔字符串,从而提高字符串的匹配速度。compile(pattern[,flags])7.5.1使用对象方法匹配字符串match()方法用于从字符串开始处进行匹配或者从指定位置处进行匹配search()方法在整个字符串中匹配搜索如果查找成功,将返回一个Match对象findall()方法用于在字符串中查找所有符合正则表达式的字符串并返回这些字符串的列表,否则返回空列表7.5.2使用对象方法替换字符串sub()方法subn()方法7.5.3使用对象方

温馨提示

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

评论

0/150

提交评论