python实用教程-第四章-字符串课件_第1页
python实用教程-第四章-字符串课件_第2页
python实用教程-第四章-字符串课件_第3页
python实用教程-第四章-字符串课件_第4页
python实用教程-第四章-字符串课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 字符串我们前面已经接触过字符串,也了解了一些基本操作,对字符串的创建、索引和分片等操作已经有了初步的理解。本章将介绍字符串的格式化、分割、搜索等方法。Python快乐学习班的同学乘坐“序列号”大巴来到了今天的第一个景点字符串主题游乐园。在这里他们将看到字符串魔幻般的变化,以及字符串的各种好玩的技巧。下面就让我们和Python快乐学习班的全体同学开始进入字符串主题游乐园进行“观赏”学习。4.1 字符串的简单操作字符串是 Python 中最常用的数据类型。我们可以使用引号(或)来创建字符串。创建字符串很简单,只要为变量分配一个值即可。请看下面的例子: say=just do it #创建字

2、符串just do it ,并赋给变量say在Python中,标准序列的所有操作(如索引、分片、成员资格、求长度、取最小值和最大值等)对字符串都适用,在第三章中,这些操作的使用示例就是直接用字符串做演示的。不过字符串是不可变的,所以字符串做不了分片赋值。看如下操作: say=just do it sayjust do it say-2:it say-2:=nowTraceback(most recent call last): File , line 1, in say-2:=nowTypeError: str object does not support item assignment怎么

3、在一个打印语句中打印出两行?看如下输入: print(读万卷书,n行万里路。)读万卷书,行万里路。输出结果得到了两行,这里使用了转义字符n,它表示换行的意思。Python中有很多转义符:转义字符描述转义字符描述(在行尾时)续行符n换行反斜杠符号v纵向制表符单引号t横向制表符双引号r回车a响铃f换页b退格(Backspace)oyy八进制数,yy代表的字符,例如:o12代表换行e转义xyy十六进制数,yy代表的字符,例如:x0a代表换行000空other其它的字符以普通格式输出4.2 字符串格式化我们目前为止对字符串的操作都是停留在赋值、重新赋值、索引、分片和打印等一些比较基本的操作上,其实字符

4、串还有更多更好的操作方式,例如在实际的项目开发中,经常使用的字符串格式化的操作也比较常见。4.2.1 经典的字符串格式化符号百分号(%)字符串格式化使用字符串格式化操作符百分号%来实现。(注意:%也可以用作模运(求余)输操作符。)。输入如下: print(hi,%s % python)hi,python print(一年有%s个月 % 12)一年有12个月在%的左边放置一个待格式化的字符串,右边则放置希望格式化的值。格式化的值可以是一个字符串或者数字。格式化字符串的%s部分称为转换说明符,它标记了需要放置转换值的位置,更通用的术语称为占位符。这个可以想象成在学校上自习时,我们通常会放一个物品在

5、一个位置上,其他人一看有这个位置放东西了,就知道这个位置被占了,而对于我们,不论什么时候去自习,直接到自己占好的位置上坐下即可。这里就可以把%s当作我们使用的物品,我们则相当于后面的%右边的值。上面示例中s表示百分号右边的值会被格式化为字符串,s指的是str,如果不是字符串,会使用str将其转换为字符串。如示例中就将10转换为字符串了。用这种方式对大多数值都有效。Python为我们提供了如下所示的格式化符号:符号描述符号描述%c格式化字符及其ASCII码%f格式化浮点数字,可指定小数点后的精度%s格式化字符串%e用科学计数法格式化浮点数%d格式化整数%E作用同%e,用科学计数法格式化浮点数%u

6、格式化无符号整型%g%f和%e的简写%o格式化无符号八进制数%G%f 和 %E 的简写%x格式化无符号十六进制数%p用十六进制数格式化变量的地址%X格式化无符号十六进制数(大写)4.2.2 元组的字符串格式化格式化操作符的右操作数可以是任何东西,如果是元组或者映射类型(如字典,下一章将进行讲解),那么字符串格式化将会有所不同。我们尚未涉及映射(字典),这里先了解一下元组。如果右操作数是元组,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。输入如下: print(%s年的冬奥会将在%s举行,预测中国至少赢取%d枚金牌 % (2022,北京,5)2022年的冬奥会将在北京举行

7、,预测中国至少赢取5枚金牌基本的转换说明符包括以下部分。注意,这些项的顺序是至关重要的。(1)%字符:标记转换说明符的开始。(2)转换标志(可选):-表示做对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充。(3)最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。(4)点(.)后跟精度值(可选):如果转换的是实数,精度值表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出。(5)转换类型:参见格式化表。4.2.3 format字符串

8、格式化从Python 2.6开始,引入了另外一种字符串格式化的方式,形式为str.format()。str.format()是对百分号(%)格式化的改进。使用str.format()时,替换字段部分使用花括号表示。在交互模式下输入: hello,.format(world)hello,world print(圆周率PI的值为:0.format(3.141593)圆周率PI的值为:3.141593 print(圆周率PI的值为:0:.2f.format(3.141593)圆周率PI的值为:3.14 print(圆周率PI的值为:pi.format(pi=3.141593)圆周率PI的值为:3.1

9、41593 print(年的冬奥会将在举行,预测中国至少赢取枚金牌.format(2022,北京,5)2022年的冬奥会将在北京举行,预测中国至少赢取5枚金牌 print(0年的冬奥会将在1举行,预测中国至少赢取2枚金牌.format(2022,北京,5)2022年的冬奥会将在北京举行,预测中国至少赢取5枚金牌 print(0年的冬奥会将在2举行,预测中国至少赢取1枚金牌.format (2022,5,北京)2022年的冬奥会将在北京举行,预测中国至少赢取5枚金牌 print(year年的冬奥会将在address举行.format(year=2022,address=北京)2022年的冬奥会将

10、在北京举行str.format()的使用形式为:用一个点号连接字符串和格式化值,多于一个的格式化值需要用元组表示。字符串中,带格式化的占位符用花括号()表示。花括号中可以没有任何内容,没有任何内容时,若有多个占位符,则元组中元素的个数需要和占位符的个数一致。花括号中可以使用数字,数字指的是元组中元素的索引下标,字符串中花括号中的索引下标不能超过元组中最大的索引下标,元组中的元素值可以不全部使用。花括号中可以使用变量名,在元组中对变量名赋值。花括号中的所有变量名,在元组中必须要有对应的变量定义并被赋值。元组中定义的变量可以不出现在字符串的花括号中。如下所示: print(year年的冬奥会将在a

11、ddress举行.format(year=2022,address=北京, num=5)2022年的冬奥会将在北京举行4.2.4 字符串格式化的新方法从Python3.6开始,引入了一种新的字符串格式化字符:_f-strings_,格式化字符串。使用f字符串做格式化可以节省很多的时间,使格式化更容易。f字符串格式化也称为“格式化字符串文字”,因为f字符串格式化是开头有一个f的字符串文字,即使用f格式化字符串时,需在字符串前加一个f前缀。f字符串格式化包含了由花括号括起来的替换字段,替换字段是表达式,它们会在运行时计算,然后使用format()协议进行格式化。_f-strings_使用方式如下:

12、 fhello,worldhello,world f2*1020 year=2022 address=北京 gold=5 print(fyear年的冬奥会将在address举行,预测中国至少赢取gold枚金牌)2022年的冬奥会将在北京举行,预测中国至少赢取5枚金牌在Python中,使用百分号(%)、str.format()形式可以格式化的字符串,都可以使用f字符串格式化实现。4.3 字符串方法前面一章介绍了很多列表的方法,字符串的方法比列表的还要多,是因为字符串从string模块中“继承”了很多方法。因为字符串的方法比较多,这里只介绍一些特别有用的方法,全部方法见附录A。4.3.1 spli

13、tsplit()方法通过指定分隔符对字符串进行切片。split()方法的语法:str.split(st=, num=string.count(str)str代表的是指定检索的字符串,st代表分隔符,默认为空格,num代表分割次数。返回分割后的字符串列表。如果参数num 有指定值,则仅分隔 num 个子字符串。这是一个非常重要的字符串方法,它是join的逆方法,用来将字符串分割成序列。示例如下: say=stay hungry stay foolish print(不提供任何分割符分割后的字符串:,say.split()不提供任何分割符分割后的字符串: stay, hungry, stay, f

14、oolish print(根据字母t分割后的字符串:,say.split(t)根据字母t分割后的字符串: s, ay hungry s, ay foolish print(根据字母s分割后的字符串:,say.split(s)根据字母s分割后的字符串: , tay hungry , tay fooli, h print(根据字母s分割2次后的字符串:,say.split(s,2)根据字母s分割2次后的字符串: , tay hungry , tay foolish在实际项目应用中,split()方法应用的频率比较高,特别在文本处理或字符串处理的业务中,经常需要使用该方法做一些字符串的分割操作,以得

15、到某个值。4.3.2 stripstrip()方法用于移除字符串头尾指定的字符(默认为空格)。strip()方法的语法:str.strip(chars)此语法中str代表的是指定检索的字符串,chars代表移除字符串头尾指定的字符。返回移除字符串头尾指定的字符生成的新字符串。该方法使用示例如下:say= stay hungry stay foolish #字符串前后都带有空格 print(f原字符串:say,字符串长度为:len(say)原字符串: stay hungry stay foolish ,字符串长度为:26 print(f新字符串:say.strip(),新字符串长度为:len(s

16、ay.strip()新字符串:stay hungry stay foolish,新字符串长度为:24 say=-stay hungry stay foolish- print(f原字符串:say,字符串长度为:len(say)原字符串:-stay hungry stay foolish-,字符串长度为:28 print(f新字符串:say.strip(-),新字符串长度为:len(say.strip(-)新字符串:stay hungry stay foolish,新字符串长度为:24 say=-stay-hungry-stay-foolish- print(f原字符串:say,字符串长度为:l

17、en(say)原字符串:-stay-hungry-stay-foolish-,字符串长度为:28 print(f新字符串:say.strip(-),新字符串长度为:len(say.strip(-)新字符串:stay-hungry-stay-foolish,新字符串长度为:24在实际项目应用中,strip()方法使用得比较多,特别在对字符串进行合法性校验时,一般都会先做一个移除首尾空格的操作。当字符串不确定在首尾是否有空格时,一般也会先用strip()方法操作一遍。4.3.3 joinjoin()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。join()方法的语法:str.join(

18、sequence)此语法中str代表的是指定检索的字符串,sequence代表要连接的元素序列。返回通过指定字符连接序列中元素后生成的新字符串。示例如下: say=(stay hungry,stay foolish) new_say=,.join(say) print(f连接后的字符串列表:new_say)连接后的字符串列表:stay hungry,stay foolish path_str=d:,python,study path=/.join(path_str) print(fpython file path:path)python file path:d:/python/study nu

19、m=1,2,3,4 mark=+ mark.join(num)Traceback (most recent call last): File , line 1, in mark.join(num)TypeError: sequence item 0: expected str instance, int foundjoin()方法只能对字符串元素进行连接,用join()方法进行操作时,调用和被调用的对象必须都是字符串,任意一方不是字符串,最终操作结果都会报错。在实际项目应用中,join()方法应用得也比较多,特别是在做字符串的连接时,使用join()方法的效率比较高,占用的内存空间也小。在路径

20、拼接时,使用join()是个不错的选择。4.3.4 findfind()方法检测字符串中是否包含子字符串str。find()方法的语法:str.find(str, beg=0, end=len(string)此语法中str代表的是指定检索的字符串,beg代表开始索引,默认为0,end代表结束索引,默认为字符串的长度。它返回子串所在位置的最左端索引,如果没有找到则返回-1。示例如下: say=stay hungry,stay foolish print(fsay字符串的长度是:len(say)say字符串的长度是:24 say.find(stay)0 say.find(hun)5 say.fin

21、d(sh)22find()方法还可以接收起始索引下标参数和结束索引下标参数,用于表示字符串查找的起始点和结束点,例如: say=stay hungry,stay foolish say.find(stay,3) #提供起点12 say.find(y,3) #提供起点3 say.find(hun,3) #提供起点5 say.find(stay,3,10) #提供起点和终点-1 say.find(stay,3,15) #提供起点和终点-1 say.find(stay,3,18) #提供起点和终点12在实际项目应用中,find()方法的使用不是很多,一般在想要知道某个字符串在另一个字符串中的索引下标

22、位置时使用较多,其余情形比较少使用。4.3.5 lowerlower()方法转换字符串中所有大写字符为小写。lower()方法语法:str.lower()str代表的是指定检索的字符串,该方法不需要参数。返回将字符串中所有大写字符转换为小写后生成的字符串。示例如下: field=DO IT NOW print(调用lower得到字符串:,field.lower()调用lower得到字符串: do it now greeting=Hello,World print(调用lower得到字符串:,greeting.lower()调用lower得到字符串: hello,world要在一个字符串中查找某

23、个子字符串并忽略大小写,也可以使用lower()方法,操作如下: field=DO IT NOW field.find(It) #field字符串不转换为小写字母,找不到匹配字符串-1 field.lower().find(It) #field字符串先转换为小写字母,但It不转为小写字母,找不到匹配字符串-1 field.lower().find(It.lower() #都使用lower()方法转换成小写字母后查找3在实际项目应用中,lower()方法的应用也不是很多,lower()方法的主要应用场景是将字符串中的大写字母转换为小写字母,或是在不区分字母大小写时比较字符串,其他场景应用相对少。

24、4.3.6 upperupper()方法将字符串中的小写字母转为大写字母。upper()方法语法:str.upper()此语法中str代表的是指定检索的字符串,该方法不需要参数。返回小写字母转为大写字母的字符串。示例如下: field=do it now print(调用upper得到字符串:,field.upper()调用upper得到字符串: DO IT NOW greeting=Hello,World print(调用upper得到字符串:,greeting.upper()调用upper得到字符串: HELLO,WORLD要在一个字符串中查找某个子字符串并忽略大小写,也可以使用upper

25、()方法,操作如下: field=do it now field.find(It) #都不转换为大写,找不到匹配字符串-1 field.upper().find(It) #被查找的字符串不转换为大写,找不到匹配字符串-1 field.upper().find(It.upper() #使用upper()方法转换为大写后查找3在实际项目应用中,upper()方法的应用也不是很多,upper()方法的主要应用场景是将字符串中的小写字母都转换为大写字母,或是在不区分字母大小写时比较字符串,其他场景应用相对少。4.3.7 replacereplace()方法用于做字符串替换。replace()方法的语法

26、:str.replace(old, new, max)此语法中,str代表指定检索的字符串;old代表将被替换的子字符串;new代表新字符串,用于替换old子字符串;max代表可选字符串,如果指定了max参数,则替换次数不超过max次。返回结果为将字符串中的old(旧字符串)替换成new(新字符串)后生成的新字符串。示例如下: field=do it now,do right now print(原字符串:,field)原字符串: do it now,do right now print(新字符串:,field.replace(do,Just do)新字符串: Just do it now,J

27、ust do right now print(新字符串:,field.replace(o,Just,1)新字符串: dJust it now,do right now print(新字符串:,field.replace(o,Just,2)新字符串: dJust it nJustw,do right now print(新字符串:,field.replace(o,Just,3) 新字符串: dJust it nJustw,dJust right now使用replace()方法时,若不指定第3个参数,则字符串中所有匹配到的字符都会被替换;若指定第3个参数,则从字符串的左边开始往右进行查找匹配并替

28、换,达到指定的替换次数后,便不再继续查找,若字符串查找结束仍没有达到指定的替换次数,则结束。在实际项目应用中,replace()方法的应用不多,遇到需要使用稍微复杂的替换时,可以查阅相关文档。4.3.8 swapcaseswapcase()方法的语法:str.swapcase()str代表的是指定检索的字符串,该方法不需要参数。返回大小写字母转换后生成的新字符串。swapcase() 方法用于对字符串的大小写字母进行转换,将字符串中大写转换为小写,小写转换为大写。示例如下: field=Just do it,NOW print(原字符串:,field)原字符串: Just do it,NOW print(调用swapcase方法后得到的字符串:,field.swapcase()调用swapcase方法后得到的字符串: jUST DO IT,now在实际项目应用中

温馨提示

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

评论

0/150

提交评论