Python第六章字符串剖析课件

上传人:艳*** 文档编号:242962994 上传时间:2024-09-12 格式:PPT 页数:64 大小:551.50KB
返回 下载 相关 举报
Python第六章字符串剖析课件_第1页
第1页 / 共64页
Python第六章字符串剖析课件_第2页
第2页 / 共64页
Python第六章字符串剖析课件_第3页
第3页 / 共64页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,2024/9/12,1,Python,语言编程导论,第六章 字符串,内容提要,概述,通用序列操作,字符串格式化,字符串方法,正则表达式简介,2024/9/12,2,一、概述,在,Python,中,字符串是除数字外最重要的数据类型。字符串无处不在:将字符串输出到屏幕上;从用户的键盘输入读取字符串;文件通常被视为大型字符串;网页大部分是由文本组成的。,字符串是一种聚合数据结构,可充分利用索引和切片,用于从字符串中提取子串。,而,Python,正则表达式库,是一种用来处理字符串的微型语言,但功能强大。,2024/9/12,3,二、通用序列操作,Python,中,字符串、列表和元组都属于序列。,序列有一些通用的操作。包括:索引(,indexing,)、分片(,slicing,)、加(,adding,)、乘(,multiplying,)、检查某个元素是否属于序列的成员(成员资格)、计算序列长度、找出最大元素和最小元素等。,2024/9/12,4,1,、索引,序列中的所有元素都是有编号的,从,0,开始递增。这些元素可以通过编号分别访问。索引有正索引和负索引,可根据实际情况选用。,字符串就是一个由字符组成的序列,处理字符串时,经常需要访问其中的各个字符。索引,0,指向第,1,个字符。,2024/9/12,5,例如:字符串,apple,的正索引和负索引,2024/9/12,6,例,6-1,:字符串索引应用,2024/9/12,7,执行结果:,例,6-2,:计算给定字符串的编码总和,2024/9/12,8,执行结果:,2,、分片,与使用索引访问单个元素类似,可以使用分片操作来访问一定范围内的元素。分片是实际应用中经常使用的技术,被截取的部分称为“子串”,Python 3,支持的分片格式为:,Si:j:k,表示:索引,S,对象中的元素,从索引为,i,直到索引为,j-1,,每隔,k,个元素索引一次,第三个限制,k,为步长,默认为,1,,也可以使用负数作为步长,步长,-1,表示分片将会从右至左进行而不是通常的从左至右,实际效果主是将序列反转。,在,Python,中,还可以使用,split(),函数来截取字符串。,2024/9/12,9,例,6-3,:字符串分片,2024/9/12,10,执行结果:,例,6-4,:返回文件名中的扩展名,2024/9/12,11,执行结果:,2024/9/12,12,3,、序列相加(字符串连接、合并),之前介绍过,使用“,+,”完成。除此之外,还可以使用,join,函数和,reduce,函数实现字符串的合并。注意:不同类型的数据不能相加。,如:,4,、乘法,用数字,x,乘以一个序列会生成新的序列,在新的序列中,原来的序列被重复,x,次。,如:,5,、成员资格,为了检查一个值是否在序列中,可以使用,in,运算符。该运算符检查某个条件是否为真,若为真返回,True,,否则返回,False,。,例如:,2024/9/12,13,6,、长度、最小值和最大值,len,、,min,和,max,都是内置函数。,len,返回序列中包含的元素个数。,min,返回序列中的最小值。,max,返回序列中的最大值。,例如:,2024/9/12,14,课堂练习一:,课堂练习一,2024/9/12,15,三、字符串格式化,1,、字符串格式化,C,语言使用函数,printf(),格式化输出结果,,Python,也提供了类似功能。,Python,将若干值插入带有“,%,”标记的字符串中,从而可以按照指定格式输出字符串。,语法:,%s % str1,%s %s % (str1, str2),2024/9/12,16,例,6-5,:格式化字符串,2024/9/12,17,执行结果:,例,6-6,:带精度的格式化,2024/9/12,18,执行结果:,Python,格式化字符串的替代符及含义:,符号,描述,符号,描述,%c,格式化字符及其,ASCII,码,%f,格式化浮点数字,可指定小数点后的精度,%s,格式化字符串,%e,用科学计数法格式化浮点数,%d,格式化整数,%E,作用同,%e,%u,格式化无符号整数,%g,根据值的大小决定使用,%f,或,%e,%o,格式化无符号八进制数,%G,作用同,%g,%x,格式化无符号十六进制数,%p,用十六进制数格式化变量的地址,%X,格式化无符号十六进制数(大写),%,若在字符串中输出“,%,”,需要使用“,%,”,2024/9/12,19,例,6-7,:符号、对齐和用,0,填充,在字段宽度和精度之间还可以放置一个“标志”,该标志可以是零、加号、减号或空格。零表示数字将会用,0,填充。,2024/9/12,20,执行结果:,2,、字符串的转义字符,计算机中存在可见字符与不可见字符。可见字符指键盘上的字母、数字和符号。不可见字符是指换行、回车、制表符等字符。,对于不可见字符,,Python,使用的方法类似于,C,语言,都是使用“,”作为转义字符。,Python,还提供了函数,strip(),、,lstrip(),、,rstrip(),去除字符串中的转义字符。,2024/9/12,21,Python,常用的转义字符及其含义:,符号,描述,符号,描述,反斜线,v,纵向制表符,单引号,r,回车符,”,双引号,f,换页符,a,发出系统响铃声,o,八进制数代表的字符,b,退格符,x,十六进制数代表的字符,n,换行符,000,终止符,其后的字符串全部忽略,t,横向制表符,2024/9/12,22,例,6-8,:转义字符应用,2024/9/12,23,执行结果:,四、字符串函数(方法),Python,字符串自带了大量很有用的函数,要查看这些函数,可调用,dir,并将参数指定为任何字符串(如:,dir( ),)。,虽无必要准确记住所有函数功能,但最好有个大致了解,这样有益于需要时去查询具体使用。,字符串函数的详细介绍可参阅其文档字符串或,Python,在线文档()。,此处介绍常用的字符串函数。,2024/9/12,24,1,、测试函数,用于检测字符串是否为特定格式的函数,它们组成了一个最大的字符串函数组。,测试函数都返回,True,或,False,,因此也称为布尔函数或谓词。,2024/9/12,25,字符串测试函数:,函数名,何时返回,True,函数名,何时返回,True,s.endswith(t),s,以字符串,t,结尾,s.islower(),s,只包含小写字母,s.startswith(t),s,以字符串,t,打头,s.isnumeric(),s,只包含数字,s.isalnum(),s,只包含字母和数字,s.isprintable(),s,只包含可打印字符,s.isalpha(),s,只包含字母,s.isspace(),s,只包含空白字符,s.isdecimal(),s,只包含表示十进制数字的字符,s.istitle(),s,是个大小写符合标题要求的字符串,s.isdigit(),s,只包含数字字符,s.isupper(),s,只包含大写字母,s.isidentifier(),s,是合法的标识符,t in s,s,包含字符串,t,2024/9/12,26,例如:,2024/9/12,27,2,、字符串的查找函数,函数名,返回值,s.find(t),若未找到字符串,t,,则返回,-1,;否则返回,t,在,s,中的起始位置,s.rfind(t),与,find,相同,但从右往左查找,s.index(t),与,find,相同,但如果在,s,中找不到,t,,则引发,ValueError,异常,s.rindex(t),与,index,相同,但从右往左查找,2024/9/12,28,说明:函数,index,和,find,之间的差别在于没有找到指定子串的情形。函数,index,引发异常,ValueError,,而函数,find,将返回,-1,。,例,6-9,:查找函数应用,2024/9/12,29,执行结果:,3,、字符串的替换函数,函数名,返回的字符串,s.replace(old,new),将,s,中的每个,old,替换为,new,s.expandtabs(n),将,s,中的每个制表符扩展为空格,空格宽度为,n,2024/9/12,30,Python,字符串自带了两个替换函数,如下表所示。,注意:使用替换函数可轻松地删除字符串中的子串。,例,6-10,:字符串替换,2024/9/12,31,执行结果:,4,、字符串的合并,之前介绍过,,Python,可使用“,+,”连接不同的字符串。,除此之外,还可以使用,join,函数(是,split,方法的逆方法)和,reduce,函数实现字符串的合并。,2024/9/12,32,例,6-11,:使用,join,函数连接字符串,2024/9/12,33,执行结果:,例,6-12,:使用,reduce,函数连接字符串,2024/9/12,34,执行结果:,5,、拆分函数,函数,返回的字符串,s.partition(t),将,s,拆分为三个字符串(,head,、,t,和,tail,),其中,head,为,t,前面的子串,,tail,为,t,后面的子串。返回值为元组,s.rpartition(t),与,partition,相同,但从,s,的右端开始搜索,t,。返回值为元组,s.split(t),以,t,为分隔符,将,s,划分成一系列子串,并返回一个由这些子串组成的列表,s.rsplit(t),与,split,相同,但从,s,的右端开始搜索,t,s.splitlines(),返回一个由,s,中的各行组成的列表,2024/9/12,35,拆分函数将字符串拆分成多个子串。如下表所示。,例,6-13,:拆分字符串,2024/9/12,36,执行结果:,例,6-14,:使用,split(),函数获取子串,2024/9/12,37,执行结果:,6,、字符串与日期的转换,在实际应用中,经常需要将日期类型与字符串类型互相转换。,Python,提供了,time,模块处理日期和时间。函数,strftime(),可以实现从时间到字符串的转换。,字符串到时间的转换要进行两次转换,需要使用,time,模块和,datetime,类。,2024/9/12,38,strftime(),函数:,声明:,strftime(format, tuple)-string,说明:,参数,format,表示格式化日期的特殊字符。例如:“,%Y-%m-%d,”相当于“,yyyy-MM-dd,”,.,参数,tuple,表示需要转换的时间,用元组存储。元组中的元素分别表示年、月、日、时、分、秒。,函数返回一个表示时间的字符串。,2024/9/12,39,字符串到时间的转换步骤:,第一次转换:调用函数,strptime(),将字符串转换为一个元组。其声明为:,strptime(string, format)-struct_time,函数返回一个存放时间的元组。,第二次转换:将表示年、月、日的,3,个变量传递给函数,datetime(),。,datetime,类的,datetime(),函数格式为:,datetime(year, month, day, hour, minute, second, microsecond,tzinfo),函数返回一个,date,类型的变量。,2024/9/12,40,格式化日期的常用标记:,符号,描述,符号,描述,%a,英文星期的简写,%M,分钟数,取值在,01,59,之间,%A,英文星期的完整拼写,%j,显示从本年第,1,天开始到当天的天数,%b,英文月份的简写,%w,显示今天是星期几,,0,表示星期天,%B,英文月份的完整拼写,%W,显示当天属于本年的第几周,以星期一作为一周的第一条进行计算,%c,显示本地的日期和时间,%x,本地的当天日期,%d,日期数,取值在,1,31,之间,%X,本地的当天时间,%H,小时数,取值在,00,23,之间,%y,年份,取值在,00,99,之间,%I,小时数,取值在,01,12,之间,%Y,年份的完整数字,%m,月份,取值在,01,12,之间,2024/9/12,41,例,6-15,:时间与字符串的互相转换,2024/9/12,42,执行结果:,7,、改变大小写函数,函数名,返回的字符串,s.capitalize(),将,s0,改为大写,其余小写,s.lower(),让,s,的所有字母都小写,s.upper(),让,s,的所有字母都大写,s.swapcase(),将小写字母改为大写,并将大写字母改为小写,s.title(),让,s,的大小写符合标题的要求,2024/9/12,43,说明:在以上函数中,,Python,都创建并返回一个新字符串,,Python,不会真正修改原字符串。,例如:,2024/9/12,44,8,、设置格式函数,函数名,返回的字符串,s.center(n,ch),包含,n,个字符的字符串,其中,s,位于中间,两边用字符,ch,填充,s.ljust(n,ch),包含,n,个字符的字符串,其中,s,位于左边,右边用字符,ch,填充,s.rjust(n,ch),包含,n,个字符的字符串,其中,s,位于右边,左边边用字符,ch,填充,s.format(vars),包含用于设置字符串格式的微型语言,详见:,https:/docs.python.org/3.4/library/string.html#formatspec,2024/9/12,45,例,6-16,:设置格式,2024/9/12,46,执行结果:,9,、剥除函数,函数名,返回的字符串,s.strip(ch),从,s,开头和末尾删除所有包含在字符串,ch,中的字符,s.lstrip(ch),从,s,开头(左端)删除所有包含在字符串,ch,中的字符,s.rstrip(ch),从,s,末尾(右端)删除所有包含在字符串,ch,中的字符,2024/9/12,47,剥除函数用于删除字符串开头或末尾多余的字符。如下表所示。,默认情况下,剥除空白字符;如果指定了字符串参数,则剥除该字符串中的字符。,例,6-17,:字符串剥除,2024/9/12,48,执行结果:,例,6-18,:去除转义字符,2024/9/12,49,执行结果:,10,、字符串比较,Python,直接使用“,=,”“,!=,”操作符比较两个字符串的内容。如果比较的两个变量的类型不相同、比较的内容也不相同。,若要比较字符串的部分内容,可以先截取子串,再使用“,=,”“,!=,”操作符进行比较。,若要比较字符串的开头和结尾部分,更方便的方式是使用,startswith(),或,endswith(),函数。,startswith(),与,endswith(),的声明为:,startswith(substring, start ,end),endswith(substring, start ,end),2024/9/12,50,例,6-19,:字符串比较,2024/9/12,51,执行结果:,例,6-20,:比较字符串开始和结束处,2024/9/12,52,执行结果:,课堂练习二:,一、假定给定两个字符串(它们可能是空串),s1,和,s2,,要将这两个串合并在一起。要求是:,s1,串的第一个字符与,s2,串的第一个字符连在一起,后续以此类推。若一个串的长度大于另一个串的长度,则保留长串的剩余字符,即连接到新串的末尾即可。例如:若,s1=abcd,、,s2=efghi,,则新串为:,aebfcgdhi,。,编写函数,laceStrings(s1,s2),,完成上述功能。,二、编写函数,OnlyCharNum(s),,对于给定的字符串只显示字母和数字。,2024/9/12,53,五、正则表达式简介,虽然,Python,字符串提供了众多实用的函数,但实际处理字符串时,常常需要更强大的工具。鉴于此,,Python,提供了一种用于复杂字符串处理的微型语言,正则表达式,但,正则表达式并不是,Python,的一部分。,正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如,str,自带的方法,但功能十分强大。,实际上,正则表达式是一种简练描绘一组字符串的方式,可用于高效地执行常见的字符串处理任务,如匹配、替换和分拆字符串。,使用正则表达式编写一些逻辑验证非常方便,如:电子邮件及电话号码的格式验证。,Python,提供了,re,模块实现正则表达式的验证。,2024/9/12,54,1,、正则表达式的构成,正则表达式,是,包含元字符,(metacharacter),的列表,。,Python,支持的正则表达式元字符和语法,2024/9/12,55,2,、,re,模块中一些重要函数,函 数,描 述,compile(pattern, flags),根据包含正则表达式的字符串创建模式对象,search(pattern, string, flags),在字符串中查找模式,match(pattern, string, flags),在字符串的开始处匹配模式,split(pattern, string),根据模式的匹配项来分割字符串,findall(pattern. String),列出字符串中模式的所有匹配项,sub(pat, repl, string. Count=0),将字符串中所有,pat,的匹配项用,repl,替换,escape(string),将字符串中所有特殊正则表达式字符转义,2024/9/12,56,例,6-21,:,2024/9/12,57,2024/9/12,58,3,、,re,模块中匹配对象的重要方法,方 法,描 述,group(group1, ),获取给定子模式(组)的匹配项,start(group),返回给定组的匹配项的开始位置,end(group),返回给定组的匹配项的结束位置(与分片一样,不包括组的结束位置),span(group),返回一个组的开始和结束位置,2024/9/12,59,例,22,:,2024/9/12,60,执行结果:,例,6-23,:编写一个程序,从键盘输入若干字符串,当输入,done,或,quit,则结束程序。,通常的方法为:,2024/9/12,61,执行结果:,使用正则表达式用户输入,done,或,quit,结束程序:,2024/9/12,62,执行结果:,例,6-24,:假设要识别逗人的字符串:开头为一个或多个,ha,,末尾为一个或多个,!,2024/9/12,63,执行结果:,说明:本函数如果不使用正则表达式,将非常麻烦。,4,、关于正则表达式的说明,Python,的,re,模块规模庞大,其中有大量正则表达式函数可用于执行字符串处理任务,如匹配、分拆和替换;还有提高常用正则表达式处理速度的技巧,以及众多匹配常用字符的捷径。,re,模块的文档可参见:,2024/9/12,64,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!