嗨,我是码农飞哥,感谢您阅读本文,欢迎点击三连。本文将重点介绍Python字符串的各种常用方法。字符串在实际开发中经常用到,熟练掌握它的各种用法尤为重要。干货满满,建议收藏。欢迎大家点击三连。如果您有任何疑问或需求,欢迎随时留言~~~。@[TOC]前言在之前关于序列的文章中,我已经对字符串做了一些简单的介绍。欢迎小伙伴们看看【【Python从入门到精通】(五)Python内置的数据类型-序列和字符String,不交女朋友,不交保姆,只有会用的干货](https://feige.blog.csdn.net/a...,本文将对字符串的各种常见用法做一个详细的介绍。欢迎大家提意见三元组。字符串的拼接是通过+运算符完成的。现有的字符串代码弄非good,需要把字符串CodeNongfei拼接在它的后面,生成一个新的字符串CodeNongfei你好,飞码哥好棒,例如:str6='你好,飞码哥,'#使用+运算符symbolprint('+运算符拼接的结果=',(str6+'飞哥牛逼'))运算结果为:+运算符的拼接结果=码农飞哥,码农飞哥真棒字符串截取(字符串切片)切片操作是访问字符串的另一种方式,它可以访问一个certain范围内的元素可以通过切片操作生成新的字符串。切片操作的语法格式为:sname[start:end:step]各参数的含义为:sname:表示字符串的名称start:表示切片的起始索引位置(包括这个位置),这个参数可以也可以不指定,如果不指定,则默认为0,即从序列的开头开始切片。end:表示切片的结束索引位置(不包括该位置),如果不指定,默认为序列的长度。step:表示步长,即在切片过程中,每隔几个存储位置(包括当前位置)取元素,即如果step的值大于1,比如step为3时,当元素被切片时,下一个元素将以2个位置的间隔获取。举个栗子来解释一下:str1='好好学习,天天进步'#取出索引下标为7的值print(str1[7])#从下标0开始取值,直到下标为7(的索引值notincluded)print(str1[0:7])#取值从下标1开始直到下标为4的索引值(不包括在内),因为step等于2,所以会间隔1个元素取值print(str1[1:4:2])#取出最后一个元素print(str1[-1])#从下标-9取值,直到下标-2的索引(不包括)运行的结果valueprint(str1[-9:-2])是:好好学习,每天好好学习,每天拆分字符串。Python提供了split()方法来分割字符串。split()方法可以实现将一个字符串按照指定的分隔符分割成多个子串,这些子串会保存在列表中(不包括分隔符),作为方法的返回值反馈。该方法的基本语法格式如下:str.split(sep,maxsplit)该方法中各部分参数的含义为:str:表示要拆分的字符串sep:用于指定分隔符,可以包含多个字符,该参数默认为None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。最终列表中的子字符串最大为maxsplit+1,如果不指定或者指定为-1,表示不限制拆分次数。在split方法中,如果不指定sep参数,也不能指定maxsplit参数。例如:str='https://feige.blog.csdn.net/'print('不指定拆分个数',str.split('.'))print('指定拆分个数为2times',str.split('.',2))的结果是:未指定拆分次数['https://feige','blog','csdn','net/']numberofsplits指定为2次['https://feige','blog','csdn.net/']合并字符串合并字符串的作用与split正好相反。Python提供了join()方法将一个列表(或元组)中包含的多个字符串接成一个字符串。其语法结构为:newstr=str.join(iterable)该方法各部分参数含义为:newstr:表示合并后生成的新字符串str:用于指定合并时的分隔符iterable:合并的源字符operation字符串数据,可以以列表、元组等形式提供。还是例子:list=['码农飞哥','努力学习','优秀']print('Joinby.','.'.join(list))print('Joinby-','-'.join(list))运行结果为:通过。拼接代码弄飞哥吧。努力学习。很棒()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索到的字符串不存在,则返回0,否则返回出现的次数。其语法结构为:str.count(sub[,start[,end]])该方法各部分参数含义为:str:表示原字符串sub:表示要检索的字符串。start:指定搜索的开始Location,即从哪里开始检测。如果没有指定,默认是从头开始。end:指定搜索的结束位置。如果不指定,则表示查找到最后。例如:str='https://feige.blog.csdn.net/'print('统计.出现次数',str.count('.'))print('从位置1开始统计出现次数到倒数第五个位置',str.count('.',1,-5))运算结果为:统计从第1个位置到倒数第6个位置出现的次数3。出现次数2检测字符串是否包含某个子串Python提供了一个find方法,用于检索字符串中是否包含目标字符串,如果是,则返回第一个出现的字符串的索引,否则返回-1。其语法结构为:str.find(sub[,start[,end]])该方法各参数含义为:str:表示原始字符串sub:表示要检索的目标字符串start:表示开始thesearchPosition,不指定则默认从头查找end:表示结束查找的结束位置,不指定则默认查找到结尾。Python还提供了rfind()方法。与find()方法最大的区别是rfind()从字符串的右侧开始搜索。还是例子:str='码农飞哥'print('查找是否包含字符串'飞哥',str.find('飞哥'))print("查找是否包含字符串'Hello'",str.find('Hello'))运行结果为:检查是否包含字符串"Philo"2检查是否包含字符串'hello'-1Python也提供了index()方法来检查是否包含字符串包含一个Substring,该方法的参数与find方法相同,唯一不同的是当指定的字符串不存在时,index()方法会抛出异常。这里我就不细说了。字符串对齐方式Pythonstr提供了三种可用于文本对齐的方法,分别是ljust()、rjust()和center()。ljust()方法用于将指定字符填充到指定字符串的右侧,从而达到文本左对齐的目的,其语法结构为:S.ljust(width[,fillchar])的含义该方法中的各个参数为:S:表示要填充的字符串width:表示包括S本身的长度,字符字符串的总长度fillchar:可选参数,用于指定用于填充的字符字符串,默认使用空格。rjust()方法是将指定的字符填充到字符串的左边,从而达到文本右对齐的目的。center()方法用于使文本居中而不是左对齐或右对齐。例如:str1='https://feige.blog.csdn.net/'str2='https://www.baidu.com/'print("通过-实现左对齐",str1.ljust(30,'-'))print("通过-实现左对齐",str2.ljust(30,'-'))print("通过-右对齐",str1.rjust(30,'-'))print("通过-右对齐",str2.rjust(30,'-'))print("通过-居中对齐",str1.center(30,'-'))print("Achievingcenteralignmentthrough-",str2.center(30,'-'))运行结果为:左对齐是通过-https://feige.blog.csdn.net/--Pass-实现左对齐https://www.baidu.com/--------Pass-实现右对齐--https://feige.blog.csdn.net/Passing-实现右对齐--------https://www.baidu.com/Pass-实现中心对齐-https://feige.blog.csdn.net/-Pass-实现中心对齐----https://www.baidu.com/----检索字符串是否以指定字符串开头(startswith())startswith()方法用于检索字符串是否以指定字符串开头,如果是则返回True;否则,它返回False。其语法结构为:str.startswith(sub[,start[,end]])该方法各参数含义为:str:表示原始字符串sub:要检索的子字符串'start:指定起始位置检索索引,不指定则默认从头查找end:指定查找结束位置的索引,不指定则默认一直查找到结尾。举个栗子来说明:str1='https://feige.blog.csdn.net/'print('是否以https开头',str1.startswith('https'))print('是否以feige开头',str1.startswith('feige',0,20))运行结果为:是否以https开头True是否以feige开头False检索字符串是否以指定字符串结尾(endswith())endswith()方法用于检索字符串是否以指定字符串结尾,如果是,则返回True,否则返回False。其语法结构为:str.endswith(sub[,start[,end]])该方法各参数含义与startswith方法相同,此处不再赘述。字符串大小写转换(3种)函数及用法Python提供了3种字符串大小写转换方法。title()方法用于将字符串中每个单词的首字母转换为大写,并转换所有其他字母。作为小写。转换完成后,该方法返回转换后的字符串。如果字符串中没有要转换的字符,则此方法将原封不动地返回字符串。其语法结构为str.title()lower()用于将字符串中的所有大写字母转换为小写字母。转换完成后,该方法将返回新得到的子串。如果字符串原本全部是小写字母,则该方法将返回原始字符串。其语法结构为str.lower()upper()用于将字符串中的所有小写字母转换为大写字母。如果转换成功,则返回新的字符串;否则,返回原始字符串。它的语法结构是:str.upper()。举个例子说明一下:str='飞哥勇敢飞'print('首字母大写',str.title())print('全部小写',str.lower())print('全部大写',str.upper())运行结果为:首字母大写Feige勇敢飞全小写feige勇敢飞全大写FEIGE勇敢飞3种去除字符串中空格的方法(删除特殊字符)Python提供了三种去除字符串中空格的方法(deleteSpecialcharacters),这里的特殊字符是指表符(\t)、回车符(\r)、换行符(\n)等。strip():删除字符串前后的空格或特殊字符(左右)lstrip():删除字符串前面的空格或特殊字符(左)rstrip():删除字符串后的空格或特殊字符字符串(右)Python的str是不可变的,所以这三个方法只返回删除前后空格后的字符串副本,不会改变字符串本身。让我们用一个例子来说明:str='\nFly'print('删除前后空格(特殊字符串)',str.strip())print('删除左边空格(特殊字符串)',str.lstrip())print('Removerightspaces(specialstrings))',str.rstrip())运行结果为:去掉首尾空格(特殊字符串)代码农飞Bravelyremovetheleftspaces(specialstrings)代码农飞勇敢去掉右边的空格(特殊字符串)代码农飞勇敢飞encode()和decode()方法:字符串编码转换最早的字符串编码是ASCll编码,只编码10个数字,26个大小写英文字母和一些特殊字符,ASCII码最多只能表示256个字符,每个字符只需占用1个字节。为了兼容各国的字符,相继出现了GBK、GB2312、UTF-8编码等。UTF-8是一种国际通用的编码格式。它包含世界上所有国家都需要使用的字符。规定英文字符占1个字符段,汉字占3个字节。encode()方法为字符串类型(str)提供了一个方法,用于将str类型转换为bytes类型。这个过程也称为“编码”。其语法结构为:str.encode([encoding="utf-8"][,errors="strict"])将bytes类型的二进制数据转换为str类型。这个过程也叫“解码”,它的语法结构是:bytes.decode([encoding="utf-8"][,errors="strict"])下面举例说明:str='码农飞哥来吧'bytes=str.encode()print('encoding',bytes)print('decoding',bytes.decode())运行结果为:encodingb'\xe7\xa0\x81\xe5\x86\x9c\xe9\xa3\x9e\xe5\x93\xa5\xe5\x8a\xa0\xe6\xb2\xb9'解码码农飞格加加油默认编码格式为UTF-8,编码和解码格式必须一致,否则解码会失败。序列化与反序列化在实际工作中,我们经常将一个数据对象序列化为一个字符串,将一个字符串反序列化为一个数据对象。Python自带的序列化模块就是json模块。json.dumps()方法是将Python对象转成字符串。json.loads()方法是将编码后的JSON字符串解码为Python对象。例如:importjsondict={'学号':1001,'姓名':"张三",'分数':[{'语文':90,'数学':100}]}str=json.dumps(dict,ensure_ascii=False)print('序列化为字符串',str,type(str))dict2=json.loads(str)print('反序列化为对象',dict2,type(dict2))运行结果is:序列化成字符串{"name":"张三","score":[{"数学":100,"语文":90}],"学号":1001}
