在前面已经提到Python中的字符串了,本文来列举介绍字符串的方法,我将字符串的方法分为以下几类:
①查询方法
str.find(target,start=None,end=None)
该方法用于查询字符串str中是否含有target,如果有,则返回target在这个字符串中首次出现的首字符的索引(从左往右检索),如果没有,则返回 -1 ,第二个参数和第三个参数用于指定查询的区域,包括开始索引,不包括结束索引(左闭右开)。
my_str = 'hello jonas' result = my_str.find('o') # 从左往右查找,找到字符o则返回它的下标索引,后面的o则不会被检索 print(result) # 输出 4 result = my_str.find('o',5) # 从字符串下标索引为5(包括)开始查找,如果不写结束索引则默认查找到字符串的最后一个字符 print(result) # 输出 7
str.rfind(target,start=None,end=None)
该方法与find()基本一致,不同的是检索的方向是从右往左
my_str = 'hello jonas' result = my_str.rfind('o') print(result) # 输出 7
str.index(target,start=None,end=None)
该方法与find()基本一致,不同的是该方法查询不到结果则会报错
my_str = 'hello jonas' result = my_str.find('w') print(result) # 输出 -1 result = my_str.index('w') print(result) # 查询不到结果,程序报错
str.rindex(target,start=None,end=None)
该方法与index()基本一致,不同的是检索的方向是从右往左
my_str = 'hello jonas' result = my_str.find('o') print(result) # 输出 4 result = my_str.rindex('o') print(result) # 输出 7
②截取方法
str.split(sep=None,maxsplit=-1)
该方法两个参数都有默认值,也就以为着该方法可以不传实参直接调用,默认参数的情况下,该方法会将字符串中所有出现空格、制表符 \t 和换行符 \n 的地方打断,将剩下的所有字符串片段存放到一个列表中,并将这个列表返回;第一个参数sep代表截取字符串,如果指定了这个参数,则会按照这个指定的字符串去打断字符串str,将剩下的字符片段塞存放到一个列表中,返回这个列表;第二个参数是指定最大打断次数,默认值是-1代表无限。
my_str = 'hello jonas\thow are you\ni am fine' # 默认情况下按照空格,制表符和换行符分隔 result = my_str.split() print(result) # 输出:['hello', 'jonas', 'how', 'are', 'you', 'i', 'am', 'fine'] my_str2 = 'hello jonas' # 按照字符'o'拆分字符串 result = my_str2.split('o') print(result) # 输出:['hell', ' j', 'nas'] # 按照字符'o'拆分字符串,并且最多拆分一次(从左往右检索) result = my_str2.split('o',1) print(result) # 输出:['hell', ' jonas']
str.rsplit(sep=None,maxsplit=-1)
该方法与split()基本一致,不同的是检索的方向是从右往左
my_str2 = 'hello jonas' # 从左往右检索 result = my_str2.split('o',1) # 从右往左检索 result2 = my_str2.rsplit('o',1) print(result,result2) # 输出:['hell', ' jonas'] ['hello j', 'nas']
str.partition(sep)
该方法也用于拆分字符串,与split()方法不同的是,该方法没有默认值,所以必须要指定拆分依据的字符串sep,如果不指定则会报错;除此以外,该方法必定会将字符串str分为三部分,第一部分是拆分字符串sep的前面,第二部分是拆分字符串sep本身,第三部分是拆分字符串sep后面,并将这三部分存放在一个元组中,结果返回这个元组。
my_str = 'hello jonas' # 从左往右检索 result = my_str.partition('o') print(result) # 输出:('hell', 'o', ' jonas')
str.rpartition(sep)
该方法与partition()基本一致,不同的是检索的方向是从右往左
my_str = 'hello jonas' # 从右往左检索 result = my_str.rpartition('o') print(result) # 输出:('hello j', 'o', 'nas')
③检查方法
str.startswith(prefix,start=None,end=None)
该方法用于检查字符串片段(默认是整个字符串)是否以prefix开头,如果是则返回True,否则返回False;第二和第三个参数用于指定检索区间。
my_str = 'hello jonas' # 检查是否以he开头,默认检查整个字符串 result = my_str.startswith('he') print(result) # 输出:True # 从字符串的下标索引为6开始,是否以jonas开头 result = my_str.startswith('jonas',6) print(result) # 输出:True
str.endswith(suffix,start=None,end=None)
该方法用于检查字符串片段(默认是整个字符串)是否以suffix结尾,如果是则返回True,否则返回False;第二和第三个参数用于指定检索区间。
my_str = 'hello jonas' # 检查是否以s结尾,默认检查整个字符串 result = my_str.endswith('s') print(result) # 输出:True # 从字符串的下标索引为6开始,是否以as结尾 result = my_str.endswith('as',6) print(result) # 输出:True
str.isalnum( )
该方法用于检查字符串str是否只包含数字或字母
my_str = 'hello jonas' my_str2 = '你好,jonas' my_str3 = 'hello' # 检查是否只包含数字或字母,但不能有空格,汉字 result = my_str.isalnum() result2 = my_str2.isalnum() result3 = my_str3.isalnum() print(result,result2,result3) # 输出:False False True
str.isalpha( )
检查字符串str是否是一个连续并且只包含字母或中文的字符串,如果是,则返回True,否则返回False
str.isdigit( )
检查字符串str是否只包含数字(包括十进制数字和小圆圈数字),如果是,则返回True,否则返回False
my_str = '123' my_str2 = '①②③' my_str3 = '一二三' # 检查是否只包含十进制数字或小圆圈数字 result = my_str.isdigit() result2 = my_str2.isdigit() result3 = my_str3.isdigit() print(result,result2,result3) # 输出:True True False
str.isdecimal( )
检查字符串str是否只包含数字(只包括十进制数字),如果是,则返回True,否则返回False
my_str = '123' my_str2 = '①②③' my_str3 = '一二三' # 检查是否只包含十进制数字 result = my_str.isdecimal() result2 = my_str2.isdecimal() result3 = my_str3.isdecimal() print(result,result2,result3) # 输出:True False False
str.isnumeric( )
my_str = '123' my_str2 = '①②③' my_str3 = '一二三' # 检查是否只包含数字(包括十进制数字、小圆圈数字和文字里面的数字) result = my_str.isnumeric() result2 = my_str2.isnumeric() result3 = my_str3.isnumeric() print(result,result2,result3) # 输出:True True True
str.islower( ) 与 str.isupper( )
检查字符串是否只包含小写/大写
my_str = 'Hello' my_str2 = 'hello' result = my_str.isupper() result2 = my_str2.islower() print(result,result2) # 输出 False True
str.istitle( )
检查字符串中是否每个单词的首字母都是大写
my_str = 'Hello Jonas' result = my_str.istitle() print(result) # 输出 True
④大小写转换方法
str.lower( )
将字符串转换为小写,该方法不会改变原字符串(因为字符串是不可变类型),而是生成一个新的字符串。
str.upper( )
将字符串转换为大写,该方法不会改变原字符串。
str.title( )
将字符串所有单词的首字母转为大写,该方法不会改变原字符串。
str.capitalize( )
将字符串的第一个字符转为大写,该方法不会改变原字符串。
str.swapcase( )
将字符串中的所有大写转为小写,所有小写转为大写,该方法不会改变原字符串。
str.casefold( )
将字符串str中的所有内容转换为某种对应关系,在某些国家的语言中有着某种对应关系的字符,比如常见的:将大写转为小写(其他对应关系我也不了解-.-)。
my_str = 'Hello Jonas' result = my_str.lower() result2 = my_str.upper() result3 = my_str.title() result4 = my_str.capitalize() result5 = my_str.swapcase() result6 = my_str.casefold() print(result,result2,result3,result4,result5,result6) # 输出: hello jonas HELLO JONAS Hello Jonas Hello jonas hELLO jONAS hello jonas
⑤删除方法
str.lstrip(chars=None)
该方法默认删除字符串str左边的空格,也可以指定删除内容(一般用于去空格),该方法不会改变原字符串,而是生成一个新的字符串。
str.lstrip(chars=None)
该方法默认删除字符串str左边的空格,也可以指定删除内容(一般用于去空格),该方法不会改变原字符串,而是生成一个新的字符串。
str.strip(chars=None)
该方法默认删除字符串str左边的空格,也可以指定删除内容(一般用于去空格),该方法不会改变原字符串,而是生成一个新的字符串。
⑥对齐填充方法
str.center(width,fillchar=None)
给字符串指定一个长度width,并将str在这个长度居中,剩余空间由第二个参数填充,默认使用空格填充,该方法不会改变原字符串,而是生成一个新的字符串。
str.ljust(width,fillchar=None)
给字符串指定一个长度width,并将str在这个长度中左对齐,剩余空间由第二个参数填充,默认使用空格填充,该方法不会改变原字符串,而是生成一个新的字符串。
str.rjust(width,fillchar=None)
给字符串指定一个长度width,并将str在这个长度中右对齐,剩余空间由第二个参数填充,默认使用空格填充,该方法不会改变原字符串,而是生成一个新的字符串。
str.zfill(width)
该方法用于指定字符串长度,默认用字符0填充剩余空间。
my_str = 'hello jonas' result = my_str.center(30,'*') print(result) # 输出: *********hello jonas********** result = my_str.ljust(30,'-') print(result) # 输出:hello jonas------------------- result = my_str.rjust(30) print(result) # 输出: hello jonas
⑦其他方法
str.count(sub,start=None,end=None)
该方法用于统计sub在字符串片段中出现的次数,默认检索整个字符串,但是通过第二和第三个参数可以指定检索的区域,最后返回出现的次数。
my_str = 'hello jonas' result = my_str.count('o') print(result) # 输出:2
str.format(*args,**kwargs)
该方法用于格式化字符串
my_str = 'My name is {}, I am {} years old,I come from {} ' print(my_str.format('Jonas',18,'China')) # 输出:My name is Jonas, I am 18 years old,I come from China my_str2 = '{0} {0} {1} {2}' print(my_str2.format('Jonas','Jack','Tom')) # 输出:Jonas Jonas Jack Tom
str.replace(old,new,count=None)
该方法用于替换字符串中的内容,将字符串中的old替换为new,第三个参数可以指定替换的次数,同样的,该方法不会改变原字符串,而是生成一个新的字符串。
my_str = 'hello jonas' result = my_str.replace('jonas','Jerry') print(result) # 输出:hello Jerry
除了以上七类方法,字符串还有一些内置方法,本文以后会持续更新,谢谢。