




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章字符串4.5字符串常量4.4字符串的方法4.2字符串的表示形式4.6字符串的格式化4.3字符串基本操作4.1字符串的编码方式4.7案例实战
字符串是一种表示文本的数据类型,字符串(string)中字符可以是ASCII字符、各种符号以及各种Unicode字符。
本章介绍了字符串的编码方式、字符串的定义、字符串的基本操作、字符串的格式化、字符串提供的方法等内容。4.1字符串的编码方式4.1字符串的编码方式
字符串是一种有序字符的集合,用于表示文本数据。
字符串可以包含零个、一个或者多个字符。字符串使用单引号''、双引号""或三引号(''''''、"""""")作为字符串的界定符。
字符串可以使用ASCII字符、Unicode字符以及各种符号。4.1字符串的编码方式
Python3.x完全支持中文字符,默认使用UTF8编码格式,无论是一个数字、英文字母,还是一个汉字,在统计字符串长度时都按一个字符对待和处理。
字符串属于不可变序列,意味着不可以直接修改字符串的值。4.1字符串的编码方式>>>'Python语言'.encode('utf8') #采用UTF-8编码格式进行字符串编码b'Python\xe8\xaf\xad\xe8\xa8\x80' #字节编码>>>'Python语言'.encode('gb2312') b'Python\xd3\xef\xd1\xd4'>>>'Python语言'.encode('gb2312').decode('utf8')#编码和解码格式不一致,导致错误Traceback(mostrecentcalllast):UnicodeDecodeError:'utf-8'codeccan'tdecodebyte0xd3inposition6:invalidcontinuationbyte4.1字符串的编码方式>>>'Python语言'.encode('gb2312').decode('gb2312') #编码和解码格式一致,正确显示内容'Python语言'>>>len("Python语言") #求字符串长度,中文字符和英文字符都算1个8>>>s="hello">>>s[0]="w" #字符串是不可变序列,不允许直接修改其值Traceback(mostrecentcalllast):TypeError:'str'objectdoesnotsupportitemassignment4.1字符串的编码方式示例:>>>id(s) #id()表示内存地址45901000#修改字符串变量的值会导致重新创建一个对象,并指向这个对象>>>s="Python" >>>id(s)307586484.2字符串的表示形式4.2字符串的表示形式
字符串类型在Python中是十分重要的类型,一般用引号中间添加字符的形式表达。不同于其它语言,Python中双引号("")与单引号('')是不加区分的,都可以用来表示字符串,一般有如下三种表现方式:1、使用单引号''包含字符'Python''abc''中国'注意:单引号表示的字符串里面不能包含单引号,比如Let'sgo不能使用单引号包含。4.2字符串的表示形式2、使用双引号""包含字符"PyCharm""ABC""北京"注意:双引号表示的字符串里面不能包含双引号,并且只能有一行。3、使用三引号(三对单引号''''''或三对双引号"""""")包含字符三引号'''或"""表示的字符串可以换行,支持排版较为复杂的字符串,包含在一对三引号之间而且不属于任何语句的内容被解释器认为是注释。'''hello,world!'''4.2字符串的表示形式
单引号、双引号、三单引号、三双引号可以互相嵌套,用来表示复杂字符串。例如:'''Jacksaid,"I'mverygood"'''
注意:Python不支持字符类型,Python采用字符串驻留机制,对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本。长字符串不遵守驻留机制。
空字符串表示为''或""。
前缀带r或者R的字符串表示Raw字符串(原始字符串)。
Raw字符串中的所有字符都被看做普通字符,不会处理其中的转义字符。但是,字符串的最后一个字符不能是“\”。原始字符串主要用于正则表达式、文件路径或者URL的场合。4.2字符串的表示形式>>>path='C:\Windows\twunk.exe'>>>print(path) #字符\t被转义为水平制表符C:\Windows wunk.exe#原始字符串,任何字符都不转义>>>path=r'C:\Windows\twunk.exe'>>>print(path)C:\Windows\twunk.exe4.3字符串基本操作4.3字符串基本操作4.3.1字符串访问方式字符串包括正向递增序号和反向递减序号两种序号体系。正向递增序号:0~L-1,以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1。其中L为字符串的长度。反向递减序号:-L~-1,以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。4.3字符串基本操作Python字符串提供区间访问方式,采用[N:M]格式,表示字符串中从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。如果表示中M或者N索引缺失,则表示字符串把开始或结束索引值设为默认值。示例如下:>>>str="Python大数据基础与实战">>>print(str[0],str[5],str[-1])Pn战>>>print(str[2:6])thon>>>print(str[:6])Python>>>print(str[6:])大数据基础与实战>>>print(str[:])Python大数据基础与实战4.3字符串基本操作4.3.2字符串的转义如果需要在字符中使用特殊字符时,Python用反斜杠\。反斜杠字符是一个特殊字符,在字符串中表示“转义”。转义字符含义转义字符含义\\反斜线\a响铃符\'单引号\b退格符\"双引号\f换页符\n换行\r回车符\t水平制表符\v垂直制表符\ooo八进制表示的ASCII码对应的字符\xhh十六进制表示的ASCII码对应的字符4.3字符串基本操作C语言把空字符“\0”作为字符串的结束标志,但是在Python中,空字符是作为一个普通字符进行处理。例如:>>>s='\0\x61\101'
#一个空字符、一个十六进制和一个八进制表示的ASCII字符>>>s'\x00aA' #非打印字符用十六进制表示>>>len(s) #求字符串长度34.3字符串基本操作4.3.3基本操作符---Python提供了5个字符串的基本操作符,如表所示。操作符描述x+y连接两个字符串x与yx*n或n*x复制n次字符串xxins如果x是s的子串,返回True,否则返回Falsestr[i]索引,返回第i个字符str[N:M]切片,返回索引第N到M的子串,其中不包含M4.3字符串基本操作
字符串的基本操作符示例如下:>>>s1="Hello"+""+"Python">>>print(s1)HelloPython>>>s2="重要的事情说三遍!"*3>>>print(s2)重要的事情说三遍!重要的事情说三遍!重要的事情说三遍!>>>s3='Python'ins1>>>print(s3)True4.4字符串的方法
4.4字符串的方法
字符串作为常用的一种数据类型,Python提供了很多内建方法,如字符串的查找、索引、取长度、统计、替换和分割等。下面分别加以介绍。字符串查找find()和rfind()函数分别用来查找一个字符串在另一个字符串指定范围(默认是整个字符串)中首次和最后一次出现的位置,如果不存在则返回-1;index()和rindex()方法用来返回一个字符串在另一个字符串指定范围中首次和最后一次出现的位置,如果不存在则抛出异常;count()方法用来返回一个字符串在当前字符串中出现的次数。
4.4字符串的方法>>>mystr="Pythonisanexcellentlanguage">>>index=mystr.find("an")>>>print(index)10>>>index=mystr.find("programming")>>>print(index)-1>>>index=mystr.index("excellent",0,30)>>>print(index)13>>>str="ilovepython,iamlearningpython">>>print(str.count("i")) #star和end为默认参数3>>>print(str.count("i",2))
#star值为2,end值为默认参数2
4.4字符串的方法2.字符串分隔split()、rsplit()方法分别用来以指定字符为分隔符,把当前字符串从左往右、从右往左分隔成多个字符串,并返回包含分隔结果的列表。对于split()和rsplit()方法,如果不指定分隔符,则字符串中的任何空白符号(空格、换行符、制表符等)都将被认为是分隔符,把连续多个空白字符看作一个分隔符。partition()和rpartition()用来以指定字符串为分隔符将原字符串分隔为3部分:分隔符前的字符串、分隔符字符串、分隔符后的字符串。如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串。
4.4字符串的方法>>>str='WinXP||Win7||Win8||Win10'>>>print(str.split('||'))['WinXP','Win7','Win8','Win10']>>>print(str.split('||',2)) #指定最大分隔次数为2['WinXP','Win7','Win8||Win10']>>>str.partition("||")('WinXP','||','Win7||Win8||Win10')
4.4字符串的方法3.字符串的连接join()方法用来将列表中的多个字符串进行连接,并且在相邻两个字符串之间插入指定字符。示例如下:>>>test=["I","love","Python"]>>>s="".join(test) #指定插入字符为空格>>>sIlovePython注意:使用“+”运算符也可以连接字符串,但是效率较低,应优先使用join()方法。
4.4字符串的方法4.字符串的大小写转换lower()返回小写字符串,upper()返回大写字符串,capitalize()将字符串首字符大写、title()将字符串中每个单词首字符大写、swapcase()完成大小写互换。>>>s="iamateacher">>>s.lower()'iamateacher'>>>s.upper()'IAMATEACHER'>>>s.capitalize()'Iamateacher'>>>s.title()'IAmATeacher'>>>s.swapcase()'IAMATEACHER'
4.4字符串的方法5.字符串替换replace()方法把字符串中的old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换不超过max次。>>>str="thisisstringexample....wow!!!thisisreallystring">>>print(str.replace("is","was"))thwaswasstringexample....wow!!!thwaswasreallystring>>>print(str.replace("is","was",3))thwaswasstringexample....wow!!!thwasisreallystring
4.4字符串的方法6.字符串删除strip()删除字符串两端指定的字符,rstrip()删除字符串右端指定字符,lstrip()删除字符串左端指定字符。>>>s="heisastudent\t\t">>>s.strip()#删除s左右两端的空白字符'heisastudent'>>>s.rstrip("\t") #删除s右端的\t的字符'heisastudent'>>>'aabbccddeeeffg'.strip('gaef')'bbccdd'
4.4字符串的方法7.字符串测试isalnum()、isalpha()、isdigit()、isdecimal()、isnumeric()、isspace()、isupper()、islower(),分别测试字符串是否为数字或字母、是否为字母、是否为数字字符、是否为空白字符、是否为大写字母以及是否为小写字母。>>>'1234abcd'.isalnum()True>>>'1234abcd'.isalpha() #全部为英文字母时返回TrueFalse>>>'1234abcd'.isdigit() #全部为数字时返回TrueFalse
4.4字符串的方法8.eval()内置函数eval()尝试把任意字符串转化为Python表达式并求值。>>>eval("10*2/5")4.09.startswith()、endswith()这两个方法用来判断字符串是否以指定字符串开始或者结束。>>>"test.py".endswith((".py",".cpp",".java"))True>>>"test.py".startswith("test",0)True
4.4字符串的方法10.center()、ljust()、rjust()返回指定宽度的新字符串,原字符串居中、左对齐或右对齐出现在新字符串中,如果指定的宽度大于字符串长度,则使用指定的字符(默认为空格)填充。>>>"let'sbegin".center(20,"+")"++++let'sbegin+++++">>>"let'sbegin".ljust(20,"-")"let'sbegin---------"4.5
字符串常量
4.5字符串常量Python标准库string中定义了数字字符(string.digits)、标点符号(string.punctuation)、英文字母(string.ascii_letters)、大写字母(string.ascii_uppercase)、小写字母(string.ascii_lowercase)等常量。>>>importstring>>>string.digits'0123456789'>>>string.punctuation'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'>>>string.ascii_letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'4.6
字符串的格式化
4.6字符串的格式化4.6.1格式化表达式字符串格式化表达式用%表示,%之前是需要进行格式化的字符串,%之后是需要填入字符串中的实际参数。语法如下:"%格式控制符"%实际参数格式字符转换%c格式化字符及其ASCII码%s格式化字符串%d格式化整数%f格式化浮点数字,可指定小数点后的精度
%o格式化无符号八进制数%x格式化无符号十六进制数(小写字母)
4.6字符串的格式化此外,格式化操作符还有如下辅助命令:m.n:m是数字的总宽度,n是小数位数;-:用于左对齐;+:在正数前面显示加号;0:显示的数字前面填充'0'取代空格。>>>print('%f'%3.1415926) #默认保留6位小数3.141593>>>print('%20.2f'%3.1415926)#返回的数字宽度是20位,留取2位小数,默认右对齐
3.14
4.6字符串的格式化4.6.2format()方法<模板字符串>.format(<逗号分隔的参数>)<模板字符串>是由一系列的占位符组成,用来控制字符串中嵌入值的出现位置及格式,<逗号分隔的参数>按照序号顺序替换到<模板字符串>的占位符处。占位符如何被替换取决于每个格式说明符,格式说明符以“:”作为其前缀来表示。占位符用大括号{}括起来,如果大括号中没有序号,则按照位置顺序替换。除了通过序号来指定填充的参数外,还可以通过关键字参数、下标、字典的key和对象的属性来填充。
4.6字符串的格式化>>>print('{}:计算机{}的CPU占用率为{}%.'.format('2019-01-30','Python',10))2019-01-30:计算机Python的CPU占用率为10%.>>>names=['Romeo','Juliet']>>>print('Iam{args[0]},Ilove{args[1]}.'.format(args=names))IamRomeo,IloveJuliet.>>>person={'name':'Liu','age':24,'job':'Pythoneer'}>>>print('Iam{person[name]},{person[age]}yearsold,a{person[job]}.'.format(person=person))IamLiu,24yearsold,aPythoneer.4.7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国出生医学证明管理市场调查研究报告
- 主题教育环境促进幼儿发展
- 小学语文阅读教学方法探析
- 立体仓库设备相关物料搬运设备相关行业投资规划报告
- 软件物料清单 (SBOM)行业数据分析报告(2025版)
- 梯田文化教育
- 牛油果绿毕业答辩
- 胶水销售年终总结
- 地质灾害检测员培训
- 副干酪乳杆菌培养物对小鼠溃疡性结肠炎的缓解作用及机制研究
- TZRIA 002-2024 工业巡检四足机器人技术条件
- 小学科学二年级下册教案(全册)
- 2025安徽振含控股集团有限公司招聘8人笔试参考题库附带答案详解
- 2025年内蒙古机电职业技术学院单招职业技能测试题库及答案一套
- 河道洪水应急响应预案
- 《欣赏与设计》(教案)2024-2025学年数学六年级下册 北师大版
- 2025年中国烟气检测仪器行业市场运行态势、进出口贸易及发展趋势预测报告
- 减免保证金申请书
- 五年级下册语文第三单元遨游汉字王国单元整体教学设计
- 银行信贷部门廉政风险点及防控措施
- 高一上学期统编版(2019)必修中外历史纲要上翻书大赛课件
评论
0/150
提交评论