【文档说明】Python程序设计基础-Chap04-字符串.ppt,共(57)页,648.500 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2382.html
以下为本文档部分文字说明:
第4章字符串内容提纲4.1字符串的基本操作24.2字符串格式化34.3常用字符串函数和方法1引例❖引例▪看看这个简单的例子。▪当我们在利用QQ等通信工具向好友发送消息时,所发送的消息就是由一系列字符串组成的。我们发送的消息会通过服务器中转,然后再发送到目的地。▪
在这个过程中,服务器就是将消息的内容当成字符串来处理的。❖4.1.1字符串的表示▪我们可以使用两个单引号(')或两个双引号(")括起来创建字符串•>>>str='howareyou'•>>>print(str)•howareyou•>>>str="howareyou"•>>>print(
str)•howareyou▪单引号、双引号、三引号4.1字符串的基本操作❖4.1.1字符串的表示▪下面来看一些对比的例子•>>>#单引号中使用双引号•str2='"python"'•>>>#双引号中使用单引号•str3="'python'"•>>>#三单引号•st
r4='''python'''•>>>#三单引号中间使用双引号•str5='''"python"'‘’4.1字符串的基本操作❖4.1.1字符串的表示▪下面来看一些对比的例子•>>>#三单引号中有换行符•str6='''hello•pyt
hon'''•>>>#三双引号中有换行符•str7="""hello•python“”“4.1字符串的基本操作❖4.1.1字符串的表示▪下面来看一些对比的例子•>>>print(str2)•"pytho
n"•>>>print(str3)•'python'•>>>print(str4)•python•>>>print(str5)•"python"4.1字符串的基本操作•>>>print(str6)•hello•pyt
hon•>>>print(str7)•hello•python❖4.1.1字符串的表示▪(1)单引号中可以使用双引号,中间的会当作字符串输出。▪(2)双引号中可以使用单引号,中间的会当作字符串输出。▪(3)三单引号和三双引号中
间的字符串在输出时保持原来的格式。4.1字符串的基本操作❖4.1.2索引▪序列是有顺序的,可以根据字符在序列中的位置将其编号,字符在字符串中的位置称为“索引”。▪在Python中,字符串中的字符是通过
索引来提取的,索引从0开始。索引可以取负值,表示从末尾提取,最后一个为-1,倒数第二个为-2,即程序认为可以从结束处反向计数。▪在Python中,不仅可以对单个字符建立索引,而且还可以对字符串中的子串建立索引。4.1字符串的基本操作❖4.1.2索引▪Python中用索引运算符“[]”
来提取字符串中的字符。▪字符串索引4.1字符串的基本操作❖4.1.2索引▪若存取范围超过范围的索引位置(或空字符串中的索引位置)会产生indexoutofrange异常。•>>>s='howareyou'•>>>s[11]#索引超出字符串范围•Tracebac
k(mostrecentcalllast):•File"<pyshell#41>",line1,in<module>•s[11]•IndexError:stringindexoutofrange4.1字符串的基本操作❖4.1.3分片▪与使用索引
访问单个元素类似,可以使用分片操作来访问一定范围内的元素。▪分片是实际应用中经常使用的技术,被截取的部分称为“子串”或“子序列”。▪索引运算符冒号(:)指出子序列的范围。▪注意,此过程不会改变原来的字符串。4.1字符串的基本操作❖4.1
.3分片▪1.分片格式:S[i:j]▪表示选择S字符串中从索引位置i到索引位置j-1的子序列。▪Python采用的是半开区间,半开区间包含范围的起始值,而不包含结束值。4.1字符串的基本操作❖4.1.3分片▪'howareyou'[
4:]表达式指定的子序列从‘howareyou’中索引为4的位置开始,到字符串结尾处为止。4.1字符串的基本操作❖4.1.3分片▪'howareyou'[:4]表达式指定的子序列从‘howareyou’中索
引为0的位置开始,到字符串索引为4的位置为止,但不包括索引值为4的字符。4.1字符串的基本操作❖4.1.3分片▪负分片的例子:‘howareyou’[-1]表达式指定了原字符串最后一个字符。4.1字符串的基本操作❖4.1
.3分片▪负分片的例子:'howareyou'[4:-2],指定的是从原字符串索引为4的位置开始,到原字符串倒数第3个位置结束的子串。4.1字符串的基本操作❖4.1.3分片▪2.分片格式:S[i:j:k]▪表示选择S字符串中的字符,从索引位置i直到索引位置j
-1,每隔k个字符索引一次,k为步长,默认为1。若省略i,则表示从起始位置开始索引;若省略j,则表示到结束位置为止。步长值指出了从原字符串中每隔多少个字符就取出值到子串中。▪也可以使用负数作为步长,步长-1表示分片将会从右至左进行而不是通常的从左至右,实际效果主是将序列反转。4.1
字符串的基本操作❖4.1.3分片▪指定步长的分片4.1字符串的基本操作❖4.1.3分片▪Python不支持字符类型;字符会被视为长度为1的字符串,因此也被认为是一个子字符串。要访问子串,请使用方括号的切片加上索引或直接使用索引来获取子字符
串。4.1字符串的基本操作❖4.1.4合并▪Python使用“+”连接不同的字符串。“+”运算符需要两个字符串对象,得到一个新的字符串对象。新的字符串对象由前面两个字符串对象连接而成(将第2个字符串的开始连接到第1个字符串的末尾)。•
>>>str1='Hello'•>>>str2='Guangzhou'•>>>str1+str2•'HelloGuangzhou'•>>>str2+str1•'GuangzhouHello'•>>>str1+''+str2•'HelloGuangzhou'4.1字符串
的基本操作❖4.1.4合并▪当出现“+”运算符时,Python是怎么知道该做连接运算还是加法运算呢?▪操作数的类型决定将执行的运算类型。如果“+”两侧都是字符串类型,则进行连接操作;如果“+”两侧都是数字类型,则进行加法运算;如果“+”两侧是不同的类型,Python解释
器将提示出错。4.1字符串的基本操作❖4.1.4合并▪使用join()连接字符串:•>>>strs=['Hello','China','Hello','Guangzhou']#多个字符串存放在列表中•>>>result=''.jo
in(strs)#调用join(),依次连接列表中的元素•>>>print(result)•HelloChinaHelloGuangzhou4.1字符串的基本操作❖4.1.5复制▪使用重复运算符“*”实现字符串的复制。▪“*
”需要一个字符串对象和一个整数,产生1个新的字符串对象。新的字符串对象是由原字符串复制而成,复制的次数为给出的整数值,而复制字符串时,字符串和整数的顺序无关。4.1字符串的基本操作❖4.1.5复制•>>>str='Guangzhou'•>>>str*3#st
r3次复制•'GuangzhouGuangzhouGuangzhou'•>>>3*str#str3次复制•'GuangzhouGuangzhouGuangzhou'•>>>(str+'')*3•'GuangzhouG
uangzhouGuangzhou'•>>>str*str•Traceback(mostrecentcalllast):•File"<pyshell#83>",line1,in<module>•str*str•TypeError:can'tmultiplyse
quencebynon-intoftype'str'4.1字符串的基本操作❖4.1.6截取▪方法1:“索引”“切片”来截取字符串获取子串。▪方法2:使用split()来获取子串。▪split()的语法如下:split([ch
ar][,num])[n]•参数char表示用于分割的字符,默认的分割字符是空格。•参数num表示分割的次数。默认情况下,将根据字符char在字符串中出现的个数来分割子串。•函数的返回值是由子串组成的列表。参数n表示取第几个分片。•split()就是将一个字符串分
裂成多个字符串组成的列表。4.1字符串的基本操作❖4.1.6截取▪使用split()获取子串的例子•>>>sentence="Janesaid:one,two,three,four"•>>>print(sentence.split())#使用空
格获取子串•['Jane','said:','one,','two,','three,','four']4.1字符串的基本操作❖4.1.6截取▪使用split()获取子串的例子•>>>sentence="Janesaid:one,two,three,four"•>>>print(sen
tence.split(","))#使用逗号获取子串•['Janesaid:one','two','three','four']•>>>print(sentence.split(",",2))#使用逗号获取子串,num值为2•
['Janesaid:one','two','three,four']4.1字符串的基本操作❖4.1.6截取▪使用split()获取子串的例子•>>>sentence="Janesaid:one,two,three,four"•>>>print(sente
nce.split(",")[2])#使用逗号获取索引为2的分片•three•>>>print(sentence.split(",")[0])#使用逗号获取索引为0的分片•Janesaid:one•>>>print(sentence.split()[0])#使用空格获取索引为0的分片•J
ane4.1字符串的基本操作❖4.1.7比较▪1.使用“==”、“!=”、“<”、“>”运算符▪(1)单字符字符串的比较•>>>'a'=='a'#两个字符相同,返回真•True•>>>'a'=='A'#两个字符不相同,返回假•False•
>>>'a'!='A'#ord(a)=97,ord(A)=65,97!=65返回真•True•>>>'a'>'A'#ord(a)=97,ord(A)=65,97>65返回真•True•>>>'1'<"2"•True4.1字
符串的基本操作❖4.1.7比较▪1.使用“==”、“!=”、“<”、“>”运算符▪(2)多字符字符串的比较•>>>'abs'<'cde'#索引位置0的’a’<’c’•True•>>>'abc'<'abd'#索引位置2的’c’<’d’•True•>
>>'abc'>'abcd'#'abc'都相等,较长的字符串更大•False•>>>''<'a'#空字符串比其他字符串都小•True4.1字符串的基本操作❖4.1.7比较▪2.使用startswith()
、endswith()▪startswith()声明为:startswish(substr,[start[,end]])•参数substr是与源字符串开头部分比较的子串。•参数start表示开始比较的位置。•参数end表示比较结束的位置。•即在“start:end”范围内搜索子串sub
str。•如果字符串以substr开头,则返回True,否则返回False。▪endswith()的参数与返回值与startswith()类似,不同的是endswith()从源字符串的尾部开始搜索。▪startswith()、endswith()不能用于比较源字符串中
任意部分的子串。4.1字符串的基本操作❖4.1.7比较▪2.使用startswith()、endswith()•>>>str="Howareyou"•>>>print(str.startswith("How"))#比较str的开头部分”Ho
w”•True对比•>>>str="Howareyou"•>>>print(str.endswith("you",6))•True•>>>print(str.endswith("you",6,10))•False•>>>print(str.endswith("
you",6,len(str)))•True4.1字符串的基本操作4.1.8长度与最值•>>>str="HelloWorld"•>>>len(str)#求字符串str的长度•10•>>>max(str)#求字符串str中最大的字符•'r'•>>>mi
n(str)#求字符串str中最小的字符•'H'•>>>max('bcd','fig','abcd','xyz','abab')#求多个字符串中最大的字符串•'xyz'•>>>min('bcd','fig','abcd','xyz','
abab')#求多个字符串中最小的字符串•'abab'4.1字符串的基本操作❖4.1.9in运算符▪in运算符用于检查集合的成员,需要两个参数:测试字符串和可能包含测试字符串的字符串。▪形式如下:str1inst
r2•如果测试字符串str1包含在str2中,且测试字符串序列必须完全相同则返回True,否则返回False。4.1字符串的基本操作❖4.1.9in运算符•>>>word="China"•>>>'h'inword•True•>>>'b
'inword•False•>>>'na'inword•True•>>>'an'inword#测试字符串序列不相同•False4.1字符串的基本操作❖4.2.1字符串的格式化输出▪Python支持格式化字符串的输出。▪基本的用法是将一个值插入一个有字符串格式符%s的字符串中。•>
>>print("Mynameis%sandweightis%dkg!"%('Zara',21))•MynameisZaraandweightis21kg!4.2字符串格式化❖4.2.1字符串的格式化输出▪格式字符串中的信息和其他任何字
符串一样进行显示。▪特殊情况是,用百分号(%)开头的特殊字符序列表明在字符串中出现%的位置,将会做一次替换。▪用命令结尾处圆括号中的数据来替换%。▪上面的实例中,用“%s”替代格式字符串中的字符串,用“%d”替代格式字符串中的数字(“d”为十进制整数)。格式
化指令与数据项,按顺序由左到右进行匹配,第一条格式命令对应第一个数据项,依次类推。▪字符串的格式化语法如下所示:“%s”%str1“%s%s…”%(str1,str2…)4.2字符串格式化如果要格式化多个值,元组中元素的顺序
必须与格式化字符串中替代符的顺序一致❖4.2.1字符串的格式化输出▪使用%f可以格式化浮点数的精度。▪根据指定的精度四舍五入。•>>>print("浮点型数字:%f"%1.23)#默认情况下输出小数点后6位数字
•浮点型数字:1.230000•>>>print("浮点型数字:%.1f"%1.23)#四舍五入后的结果为1.2•浮点型数字:1.2•>>>print("浮点型数字:%.3f"%1.2355)#格式化小数点后3位并四舍五入•浮点型数字:1.2364.2字符串格式
化❖4.2.1字符串的格式化输出▪表4-1Python格式化字符串的替代符及其含义4.2字符串格式化符号含义%c格式化字符及其ASCII码%s格式化字符串%d格式化整数%u格式化无符号整型%o格式化无符号八进制数%x格式化无
符号十六进制数%X格式化无符号十六进制数(大写)%f格式化浮点数字,可指定小数点后的精度%e用科学计数法格式化浮点数%E作用同%e,用科学计数法格式化浮点数%g根据值的大小决定使用%f或%e%G作用同%
g,根据值的大小决定使用%f或%e%p用十六进制数格式化变量的地址❖4.2.2宽度和精度▪可以为每个数据项指定字段显示的宽度(即数据占据的空格数)。▪如果宽度值为正值,则是在指定的宽度内右对齐;若指定了负值,则数据在指定的宽度内左对齐。•>>
>print("%sis%dyearsold."%("Ben",30))•Benis30yearsold.•>>>print("%10sis%-10dyearsold."%("Ben",30))•Benis30yearsold.4.2字符串格式化❖4.2
.2宽度和精度▪使用“%f”来控制浮点值的小数点右侧的位数,即精度。•>>>importmath•>>>print(math.pi)#未指定精度•3.141592653589793•>>>print("Piis%.2f"%(math.pi))
#保留小数点后2位•Piis3.14•>>>print("Piis%8.2f"%(math.pi))#指定宽度和精度,保留小数点后2位•Piis3.14•>>>print("Piis%8.4f"%(math.pi))#指定宽度和精度
,保留小数点后4位•Piis3.14164.2字符串格式化❖4.2.3字符串转义字符▪计算机中存在可见字符和不可见字符。▪可见字符指的是键盘上的字母、数字和符号。▪不可见字符指的是换行、回车等字符。▪对于不可见字符可以使用转义字符来表示。▪Python中转义字符的用法和Java相同都是使用
“\”作为转义字符。•>>>print("firstline\nsecondline")•firstline•secondline•>>>print("firstword\tsecondword")•firs
twordsecondword4.2字符串格式化❖4.2.3字符串转义字符▪去除字符串中的转义字符。•>>>str="\thelloworld\n"•>>>print("直接输出:",str)•直接输出:helloworld•>>>print("st
rip()后输出:",str.strip())•strip()后输出:helloworld•>>>print("lstrip()后输出:",str.lstrip())•lstrip()后输出:helloworld•>>>
print("rstrip()后输出:",str.rstrip())•rstrip()后输出:helloworld4.2字符串格式化❖1.字符串测试▪字符串测试用于检测字符串是否为特定格式。如果测试的结果为真,返回True,否则返
回False。•>>>s="Helloworld"•>>>s.startswith('h')#测试字符串s是否以’h’开头•False•>>>s.endswith("d")#测试字符串s是否以’d’结尾•True•
>>>s.isupper()#测试字符串s是否只包含大写字母•False•>>>s.islower()#测试字符串s是否只包含小写字母•False•>>>s.isprintable()#测试字符串s是否只包含可打印字
符•True4.3常用字符串函数和方法❖2.字符串查找•>>>s="HelloChina"•>>>print(s.find("H"))#在字符串s中查找"H"•0•>>>print(s.index("H"))#在字符串s中查找"H"•0•>>>print(s.rfin
d("H"))#在字符串s中从右往左查找"H"•0•>>>print(s.find("an"))#在字符串s中查找"an"•-14.3常用字符串函数和方法❖3.字符串替换•>>>s='one,twoandthree'•>>>s1
='one,\ttwo\tand\tthree'•>>>print(s)•one,twoandthree•>>>print(s.replace('one','1'))#将字符串s中的每个’one’替换为'1'•1,twoandthree•>>>print(s.re
place('one',''))#将字符串s中的每个’one’替换为''•,twoandthree4.3常用字符串函数和方法❖3.字符串替换•>>>print(s1)•one,twoandthree•>>>print(s1.expandtabs
(8))#将字符串s中制表符扩展为空格,宽度为8•one,twoandthree•>>>print(s1.expandtabs(10))#将字符串s中制表符扩展为空格,宽度为10•one,twoandthree4.3常用字符串函数和方法❖4.字
符串合并▪使用join()合并字符串•>>>strs=['hello','China','hello','Guangzhou']•>>>result="".join(strs)#合并的串用空格分隔•>>>prin
t(result)•helloChinahelloGuangzhou•>>>seq=['123','456','789']•>>>sep='+'#合并的串用’+’分隔•>>>print(sep.join(seq))•123+456+7894.3常用字符串函
数和方法❖4.字符串合并▪使用reduce()合并字符串•>>>fromfunctoolsimportreduce•>>>importoperator#导入模块operator,利用add()方法实现累计连接•>>>strs=['hello','China','hello','Guangzhou'
]•>>>result=reduce(operator.add,strs,"")•>>>print(result)•helloChinahelloGuangzhou4.3常用字符串函数和方法❖5.字符串拆分•
>>>url='www.ptpress.com.cn'•>>>print(url.partition('.'))•('www','.','ptpress.com.cn’)•>>>print(url.rpartition('.'))•('www.ptpress.com','.',
'cn')•>>>print(url.split('.'))•['www','ptpress','com','cn']•>>>sentence='MynameisBob'•>>>print(sentence.split())•['My','name','is','Bo
b']4.3常用字符串函数和方法❖6.字符串与日期的转换•>>>importtime,datetime•>>>print(time.strftime("%Y-%m-%d%X",time.localtime()))•2017-10-2116:09:24
•>>>t=time.strptime("2017-09-08","%Y-%m-%d")•>>>y,m,d=t[0:3]•>>>print(datetime.datetime(y,m,d))•2017-09-0800:00:004.3常用字符串函
数和方法❖7.字符串大小写•>>>s='BeginningPython:UsingPython3.4.4andPython3.5'•>>>s.lower()•'beginningpython:usingpython3.4.4andpython3.5'•>>>s.u
pper()•'BEGINNINGPYTHON:USINGPYTHON3.4.4ANDPYTHON3.5'•>>>s.capitalize()•'Beginningpython:usingpython3.4.4andpython3.5'•>>>s.title()•'BeginningP
ython:UsingPython3.4.4AndPython3.5'4.3常用字符串函数和方法❖8.字符串格式设置•>>>s='Python'•>>>ch='*'•>>>print(s.center(10))•Python•>>>print(s.center(1
0,ch))•**Python**•>>>print(s.ljust(10))•Python4.3常用字符串函数和方法❖8.字符串格式设置•>>>print(s.ljust(10,ch))•Python****•>>>print(s.rjust(10,ch))•***
*Python•>>>print(s.ljust(10))•Python4.3常用字符串函数和方法❖9.字符串剥除▪剥除函数用于删除字符串开头或末尾多余的字符,如表4-11所示。默认情况下,剥除空白字符;如果指定了字符串参数,则剥除该字符串中的字符。•>>>name="JohnSmi
th"•>>>print(name.lstrip())•JohnSmith•>>>print(name.rstrip())•JohnSmith•>>>print(name.strip())•JohnSmith4.3常用字符串函数和方法>>>titl
e="*#GoodLuck!*#*#">>>print(title.strip())*#GoodLuck!*#*#>>>print(title.strip('*#'))GoodLuck!本章小结❖字符串是程序开发中的常用数据类型,字符串的处理是实际应用中经常面对的问题。❖本章讲解了Python中
字符串的表示与操作,包括字符串的索引与分片、合并、复制、截取、比较、格式化等。重点介绍了字符串的常用函数与方法。