《Python学习之路 -- 字符串的方法》

时间:2023-01-07 18:42:55

  在前面已经提到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.isspace( )
检查字符串是否只包含空格,如果是,则返回True,否则返回False

 

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

 

除了以上七类方法,字符串还有一些内置方法,本文以后会持续更新,谢谢。