4.str的索引,切片和常用方法
今天重温了字符串的索引和切片的使用方法,虽然简单,但是容易忘记,还有字符串的常用方法,数量多且容易混淆,这里整理一下。
字符串的索引
索引指能够显示出字符串中某个单个的字符
索引字符串的第一个
s='abcdef' s1=s[0] print(s1)
执行结果:a
注意的是字符串中第一个字符的索引值是0,第二个字符的索引值是1,以此类推......
索引任意一个字符
s='abcdef' s1=s[3] print(s1)
执行结果:d
索引最后一个
s='abcdef' s1=s[-1] print(s1)
执行结果:f
注意的是如果不知道字符串的长度,想要依靠数下标索引最后一个字符就比较难,因此字符串中最后一个字符可以用-1,倒数第二个可以用-2,以此类推.....
字符串的切片
切片指表示出字符串中某个范围内的多个字符,切片操作的完整写法是[起始位置:结束位置:步长值],在正序操作中,步长值不写默认为1.
正序切片
s='abcdef' s1=s[1:4] print(s1)
执行结果:bcd
s='abcdef' s1=s[0:-1] print(s1)
执行结果:abcde
切片操作需要注意的是‘顾头不顾尾’,切片的起始位置可以显示出来,但是结束下标需要往后加1,如上代码只能切片到结束位置-1的字符。
切片显示整个字符串,就不能使用正常的切片,操作,要使用如下代码:
s='abcdef' s1=s[0:]#或者使用s1=s[:] print(s1)
执行结果:abcdef
间隔切片操作(取a,间隔一步取c,间隔一步取e)
s='abcdef' s1=s[0:-1:2] print(s1)
执行结果:ace
注意间隔切片是要搞清楚步长值是多少
倒序切片
倒序显示字符串中(倒序显示bcd)
s='abcdef' s1=s[3:0:-1] print(s1)
执行结果:dcb
注意这是切片操作,要记住切片操作‘顾头不顾尾’,同时步长值为-1表示,从后往前步长为1数。
倒序显示整个字符串
s='abcdef' s1=s[::-1]#或者写成s1=s[-1::-1] print(s1)
执行结果:fedcba
注意这个比较特殊,结束位置必须写成空格,记清楚
倒序间隔切片(显示f,c)
s='abcdef' s1=s[::-3]#或者写成s1=s[-1::-3] print(s1)
执行结果:fc
f和c之间的步长为3,因为是倒序显示,那么步长值就为-3
字符串的常用方法
capitalize 字符串首字母大写
s='asdsadas' s1=s.capitalize() print(s1)
执行结果:
Asdsadas
upper 字符串全部字符大写
s='asdsfdfd' s1=s.upper() print(s1)
执行结果:
ASDSFDFD
lower字符串全部字符小写
s='AOsjoSSoo' s1=s.lower() print(s1)
执行结果:
aosjossoo
swapcase字符串大小写反转(大写变小写,小写变大写)
s='AOsjoSSoo' s1=s.swapcase() print(s1)
执行结果:
aoSJOssOO
title每个单词首字母大写(标题模式)就是说所有单词都是以大写开始,其余字母均为小写
s='this is a*pen...wow' ##单词之间以空格,*等特殊字符隔开 s1=s.title() print(s1)
执行结果:
This Is A*Pen...Wow
center(字符串长度[,充填字符]) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格
s='hello' s1=s.center(9) s2=s.center(9,'*') print(s1,s2)
执行结果:
hello **hello**
公共方法(适用于字符串,列表等)
len测量字符串长度
s='hello' s1=s.len() print(s1)
执行结果:
5
startswith(字符[,起始下标,结束下标]) 判断字符串在范围内是否以什么为开头,默认全部 字符串
s='hello word' s1=s.startswith('he')#判断整个字符串是否以he开头 s2=s.startswith('wo',6,9)#判断在下标6-9的字符串是否以wo开头 s3=s.startswith('wt',6,9)#判断在下标6-9的字符串是否以wt开头 print(s1,s2,s3)
执行结果:
True True False
endswith(字符[,起始下标,结束下标])判断字符串在范围内是否以什么为结尾,默认全部字符串
s='hello word' s1=s.endswith('ord')#判断整个字符串是否以ord结尾 s2=s.endswith('llo',0,5)#判断在下标6-9的字符串是否以llo结尾 s3=s.endswith('dd',0,5)#判断在下标6-9的字符串是否以dd结尾 print(s1,s2,s3)
执行结果:
True True False
find(字符[,起始下标,结束下标])判断字符串在固定范围内是否含有某个字符串,返回的是第一个元素的下标,默认整个字符串
如果查找到返回第一个元素的下标,找不到返回-1
s='hello word!' s1=s.find('llo') #查找整个字符串中是否含有llo s2=s.find('llo',6,10)#查找在下标6—9的字符串中是否含有llo s3=s.find('o',6,10) #查找在下标6-9的字符串中是否含有o print(s1,s2,s3)
执行结果:
2 -1 7
index(字符[,起始下标,结束下标])判断字符串在固定范围内是否含有某个字符串,返回的是第一个元素的下标,默认整个字符串
如果找到返回第一个元素的下标,找不到则报错
s='hello word!' s1=s.index('llo') #查找整个字符串中是否含有llo s2=s.index('llo',6,10)#查找在下标6—9的字符串中是否含有llo s3=s.index('o',6,10) #查找在下标6-9的字符串中是否含有o print(s1) print(s2) print(s3)
执行结果:
2 ValueError: substring not found 7
strip() 用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列.只能移除开头或者结尾的字符
s=' hello word ' a='***hello*word***' s1=s.strip() a1=a.strip('*') print(s1,a1)
执行结果:
hello word hello*word
rstrip 删除字符串右侧的指定字符或字符序列,lstrip删除字符串左侧的指定字符或字符序列,使用方法与strip相同
count(指定字符串[,起始下标,结束下标]) 数出指定范围内的字符串中含有几个指定的字符串,默认范围整个字符串
s='abababffff' s1=s.count('ab') s2=s.count('f',6,10) s3=s.count('x',1,9) print(s1,s2,s3)
执行结果:
3 4 0
split('字符') 在指定字符处将字符串分割为多个字符串并放入同一个列表中,默认以空格为分割字符
s='this* is* a pen!' s1=s.split() #以空格为分隔符 s2=s.split('*')#以*为分隔符 print(s1) print(s2)
执行结果:
['this*', 'is*', 'a', 'pen!']
['this', ' is', ' a pen!']
replace(旧的字符串,新的字符串,代替个数)将字符串中的旧的字符串替代为新的字符串,如果不设定个数,就是全部替换
s='abcdefabab' s1=s.replace('ab','zz',1)#替换第一个 s2=s.replace('ab','zz')#替换所有 print(s1,s2)
执行结果:
zzcdefabab zzcdefzzzz
isalnum判断字符串是否由字母或数字组成
s='12s2s2f' a='deff*^'#含有特殊字符 print(s.isalnum()) print(a.isalnum())
执行结果:
True False
isalpha 判断字符串是否只有字母组成
s='sdsds4454' #由字母和数字组成 a='sdsff' #只有字母组成 print(s.isalpha(),a.isalpha())
执行结果:
False True
isdigit 判断字符串是否只有数字组成
s='sdsds4454' #由字母和数字组成 a='45466' #只有字母组成 print(s.isdigit(),a.isdigit())
执行结果:
False True

浙公网安备 33010602011771号