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

 

posted @ 2020-07-31 23:01  maday  阅读(501)  评论(0)    收藏  举报