版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计基础教程
第9章字符串提纲字符串概论和编码字符串常量的定义方法字符串的格式化输出字符串:转换与检验字符串:查找与替换字符串:分割与连接学习目标理解字符串概念和其编码掌握不同的字符串常量定义方法使用字符串对象进行格式化输出掌握字符串的各类操作:转换与检验、查找与替换、分割与连接9.1字符编码字符串的基本概念字符串(str/strings)类型是一个不可变序列,序列中包含的元素是单个字符的Unicode编码码点字符串类型支持所有不可变序列(sequence)的通用操作字符集与编码字符串中的每个元素是一个单一字符,Python使用Unicode国际标准字符集来表示不同的字符,每一个字符由字符集映射为一个整数(码点)字符集是字符与对应码点关系的集合,字符集越大,所包含的字符数量越多,用于表示码点所需的比特数就越多同一个字符在不同的字符集中可能对应不同的码点。使用某个字符集将字符序列转换为码点序列称为字符编码。将整数序列使用某个字符集的编码规定转换为字符序列称为字符解码常见的字符集Unicode(ISO/IEC
10646),支持超过10万个不同字符UCS-4,每个字符使用4个字节的整数表示UTF-16,每个字符使用1或多个16比特来存储表示UTF-8,每个字符使用1或多个8比特来存储表示(最常用也是最通用的方式)ASCII,1个字节编码GB2312、GB18030,汉字编码字符集decode和encode,实现字符集编/解码或相互转码转义序列与原始字符串转义序列含义转义序列含义\<newline>在字符串中忽略换行\r回车符(CR)\\反斜杠(\)\t横向制表符(TAB)\'单引号(')\v纵向制表符(VT)\"双引号(")\ooo最多3位八进制数字对应的字符\a响铃符(BEL)\xhh2位十六进制数字对应的字符\b退格符(BS)\N{name}Unicode标准名对应字符\f进纸/换页符(FF)\uxxxx4位十六进制对应Unicode字符\n换行符(LF)\Uxxxxxx8位十六进制对应Unicode字符以R或r开始的字符串表达,称为原始字符串(rawstring)。原始字符串不支持所有的转义序列。r'C:\Windows\notepad.exe'9.2字符串常量常量符号值ascii_lettersascii_lowercase+ascii_uppercaseascii_lowercase'abcdefghjijklmnopqrstuvwxyz'ascii_uppercase'ABCDEFGHJIKLMNOPQRSTUVWXYZ'digits'0123456789'hexdigits'0123456789ABCDEF'octdigits'01234567'punctuation'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'printableditigs+ascii_letters+punctuation+whitespacewhitespace'\t\n\r\f\v'9.3分割与连接方法split(),rsplit()函数声明
str.split(sep=None,maxsplit=-1)str.rsplit(sep=None,maxsplit=-1)字符串对象的split()和rsplit()方法用来将一个字符串分拆为多个字符串,并返回其列表对象。分拆时可以使用指定的分隔符sep,并且可指定最大分拆次数maxsplit(返回的字符串数量等于分拆次数加1)。如果maxsplit使用缺省值-1,那么就不会限制分拆次数。rsplit()与split()的不同之处在于,rsplit()从字符串对的最右端开始拆分,而split()则从左端开始拆分。partition(),rpartition()函数声明str.partition(sep)str.rpartition(sep)partition()和rpartition()方法以指定分隔字符串sep将原字符串进行分割,并返回一个包含3个对象的元组对象:分隔符前的部分,分隔符本身,分隔符后的部分。当分隔符对象在原字符串对象中出现多次时,partition使用第一次出现(最左侧)的位置进行分隔,而rpartition则使用最后一次(最右侧)的位置。当分隔符字符串在原字符串中未出现时,partition返回的元组对象第一个值为原字符串,后两个为空字符串。rpartition则在第三个值中返回原字符串,前两个为空字符串。join()函数声明str.join(iterable)字符串的join()方法用来将包含在iterable对象中的字符串对象首尾连接成一个字符串。9.4查找与替换方法find(),rfind()函数声明str.find(sub[,start[,end]])str.rfind(sub[,start[,end]])find()与rfind()方法在原字符串对象的切片s[start:end]范围内寻找子串内容sub,并返回其在原字符串对象中的位置索引值,如果没有找到,返回-1。当查找的切片范围内包含多个查找子串时,find()返回最小的(最左侧的)位置,rfind()则返回最大的(最右侧的)位置。子串在原字符串的位置,表示为子串第一个字符在原字符串中的索引值。index(),rindex()函数声明str.index(sub[,start[,end]])str.rindex(sub[,start[,end]])index()、rindex()方法与find()、rfind()方法使用方式类似,唯一不同的是,当查找的切片范围内没有找到子串内容时,index()与rindex()将产生一个ValueError而不是返回-1。count()函数声明str.count(sub[,start[,end]])count()方法采用与前面介绍的4个方法相同的方式在字符串或其切片范围内寻找互不重叠的子串,返回其出现的次数。当sub为空字符串对象时,返回原字符串或切片的长度值加1。replace()函数声明str.replace(old,new[,count])replace()方法在字符串对象中寻找子串old,并将其替换为new。可选的参数count指定了替换发生的最大次数,如果原字符串中包含了多于count个old子串,则只有前count个才会进行替找。因为字符串对象是不可变的,因此替换后返回的是一个新的字符串对象。原字符串对象不会发生任何改变。maketrans(),translate()函数声明staticstr.maketrans(x[,y[,z]])str.translate(table)我们经常要按照一个对应表格来对字符串进行替换。maketrans()方法可以生成一个映射替换表。translate()方法则可利用这个替换表来对字符串进行替换。我们可以使用不同的方法来调用maketrans()产生替换表。当只使用一个参数x时,x必须是一个从整数(Unicode码点)或单字符到整数(Unicode码点)到字符串上的映射,映射中的每一个键都会在替换时替换为对应的值。在这种情况下,值字符串可以包含多个字符,而键字符串只能包含一个字符。9.5转换与检验方法lower(),upper(),
capitalize(),title(),swapcase()函数声明str.lower()lower()方法将原字符串中的所有大写字符替换为对应的小写字符,并返回替换后的字符串拷贝。函数声明str.upper()upper()方法将原字符串中的所有小写字符替换为对应的大写字符,并返回替换后的字符串拷贝函数声明str.capitalize()capitalize()方法将原字符串中首字符替换为大写字符,其它字符则替换为小写字符,并返回替换后的字符串拷贝。函数声明str.title()title()方法将原字符串替换为其标题形式,每个单词的首字母将替换为大写,其余字母则替换为小写。函数声明str.swapcase()swapcase()方法将原字符串中的大写字符替换为对应的小写字符,小写字符则替换为对应的大写字符,并返回替换后的字符串拷贝。isalnum()、isalpha()等方法isalnum()isalpha()isascii()isdecimal()isdigit()isnumeric()isidentifier()islower()isupper()isprintable()isspace()istitle()测试字符串所含字符是否属于某一类别startswith(),endswith()函数声明str.startswith(prefix[,start[,end]])str.endswith(suffix[,start[,end]])字符串对象的startswith()和endswith()方法对于一个字符串,或当指定了start/end时对它的切片s[start:end],分别检查其是否以prefix为前缀或以suffix为后缀。prefix和suffix可以是一个字符串,也可以是包含多个字符串对象的元组。当prefix字符串,或元组中的一个成元字符串是检查对象的前缀(对于endswith则是后缀)时,则返回True,否则返回False。9.6对齐与消减方法center(),ljust(),rjust()
zfill()函数声明str.center(width[,fillchar])str.ljust(width[,fillchar])str.rjust(width[,fillchar])center()、ljust()、rjust()这三个方法可以实现对字符串进行排版。这三个方法都将原字符串的宽度扩大到width,原字符串在扩大后的字符串中向中间/左/右对齐。剩余的空间使用指定的字符(默认使用空格)进行填充。如果指定的宽度width比字符串原来的宽度还要小或相等,那么字符串并不会进行相应的扩大或填充。函数声明str.zfill(width)zfill()实现一种特殊的字符串填充方式,在原先的内容左侧使用字符’0’进行填充。当原字符串以符号符(’+’/’-’)领头时,填充的’0’会填充在符号符之后。strip(),lstrip(),rstrip()等函数声明str.strip([chars])str.lstrip([chars])str.rstrip([chars])strip()方法在字符串的前后两头将特定的字符去除后,返回去除后的字符串拷贝。chars可以是一个字符串,指定了要去除的字符的集合。如果chars被省略或设置为None,则字符串两头的空白字符将被去除。lstrip()只在字符串的前头进行消除操作,rstrip()方法只在字符串的后头进行消除操作。函数声明str.removeprefix(prefix)(Python3.9+支持)str.removesuffix(suffix)(Python3.9+支持)如果只是要在字符串对象中删除指定的前缀或后缀,那么就不应该使用strip()这些方法,而应该使用removeprefix()或removesuffix()。如果一个字符串以prefix为前缀,那么removeprefix(prefix)将返回去除了前缀prefix后的字符串拷贝。Removesuffix去除字符串的指定后缀。如果在原字符串中没有指定的前缀(或后缀),这两个方法返回未修改的原字符串。9.7格式化方法使用%运算符进行格式化key:映射键。当values由一个映射来提供值时,必须在%符号的后面紧跟着一个用()括起来的键值。映射键用来在映射中选择要格式化的值。flags:转换标志。在特定的转换类型中,转换标志会影响转换的结果。格式限定中可以同时包含零到多个转换标志。width:最小宽度。当被指定为'*'时,最小宽度由values元组中的下一个值来确定。precision:精度。表达为'.'后紧跟着精度值。精度值也可以为'*',此时与width域一样,精度值由values元组中的下一个值来确定。length-modifier:长度限定。包括'h'、'l'或'L'。长度限定的设计是为了与C语言的格式字符串相兼容,在Python语言中没有实际意义,可以忽略。type:转换类型。%[key][flags][width][.precision][length-modifier]typeflags转换标志标志意义'#'使用替换格式进行格式转换,所支持的替换格式分见各转换类型的定义。'0'对于数值类型的值,使用0字符进行填充。'-'转换值左对齐。当与'0'标志同时使用时,会覆盖'0'标志的作用。''(空格)对于数值转换,在正数之前会生成一个额外的空格。'+'在数值转换时,即使是正数也会产生一个符号符。该标志会覆盖''标志。type转换类型类型意义'd'有符号十进制整数'i'有符号十进制整数
'o'有符号八进制整数。替换格式包含一个前置的'0o''u'(已废弃不再使用)作用与'd'相同'x'有符号十六进制整数(小写)。替换格式包含一个前置的'0x''X'有符号十六进制整数(大写)。替换格式包含一个前置的'0X''e'浮点指数格式(小写)。替换格式总是包括一个小数点。精度值指定了小数点后的位数,缺省为6'E'浮点指数格式(大写)。替换格式与精度定义同上'f'浮点十进制格式。替换格式与精度定义同上'F'浮点十进制格式。替换格式与精度定义同上'g'浮点格式。当指数小于-4或不小于precision时使用指数格式(小写),否则使用十进制格式。替换格式总是包括一个小数点,且不删除尾部多余的0。精度值指定了小数点前后的位数,缺省为6'G'浮点格式。当指数小于-4或不小于precision时使用指数格式(大写),否则使用十进制格式。替换格式与精度定义同上'c'单个字符。(值可以是一个整数或者仅包含单个字符的字符串)'r'字符串(使用repr()方法转换)。指定精度为N会截断转换结果长度到N个字符's'字符串(使用str()方法转换)。指定精度为N会截断转换结果长度到N个字符'a'字符串(使用ascii()方法转换)。指定精度为N会截断转换结果长度到N个字符'%'字符%本身使用format()方法进行格式化函数声明str.format(*args,**kwargs)format()方法对字符串对象进行格式化操作。调用这个方法的字符串对象中可以包字符文本和由{}括起来的替换域。在格式化时,每一个替换域使用包含的索引(位置)值或键值以及用":"分隔的可选的格式符,在函数的参数列表中按位置或按参数名选择相应的参数值进行格式转换。方法返回所有替换域均被格式替换后的字符串拷贝。width:域宽go:分组选项。"_"、","prec:精度type:类型bcdeEfFgGnosxX[[fill]align][sign]["z"]["#"]["0"][width][go]["."prec][type]fill:任意字符align:对齐。<、>、^、=sign:符号符。+、-、""(空格)"z":调整零值"#":使用替换格式。"0":指定字符"0"做为填充字符格式化的字符串常量(Python3.6.x+)f-字符串定义与format()类似更加简捷、紧凑>>>width=10>>>prec=4>>>value=123.456>>>f"result:{value:{width}.{prec}}"'result:123.5'>>>number=1024>>>f"{number:#0x}" //使用format()中的格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027年湖南湘潭韶山职业学院高职单招职业技能考试题库附完整答案详解【夺冠系列】
- 2025年天府专修学院高职高职单招职业适应性测试考试模拟试卷附答案详解【培优】
- 2026年山东临沭职业学院单招职业技能考试题库及答案详解【各地真题】
- 2024年苏州工业职业学院单招职业技能考试题库含完整答案详解【考点梳理】
- 2026年山东外国语职业技术大学单招综合素质考试题库(有一套)附答案详解
- 2024年吉林省吉林市单招综合素质考试题库含答案详解(满分必刷)
- 2026年潍坊职业学院高职单招职业技能考试模拟试卷(名校卷)附答案详解
- 教学材料《流体力学》-第3章
- 任务7.1 运用跨境电商AI数据分析工具
- 《汽车检测与维修》-项目 3 汽车底盘检测与维修
- 广东省揭阳市2025-2026学年高二下学期期末考试化学试题(原卷版)
- 2026上海松江商业发展集团有限公司招聘笔试备考试题及答案详解
- 中国双相障碍防治指南(2025版)下载
- 游乐园安全生产管理制度
- 外墙面保温砂浆施工监理实施细则
- 2026年注册信贷分析师(CCRA)能力提升B卷题库带答案详解AB卷
- 2025神介学苑历年考核真题及答案全收录
- 跨端洞见 增长新篇-2026年跨端生态行业白皮书
- 2025年澳门大学第一轮面试题库及答案
- 北京市保安员证考试试题库及答案
- 2025年湖大面试跟笔试及答案
评论
0/150
提交评论