Python:对字符串的操作

除了了解到创建和访问(索引和分片)外,还应知道,字符串还有许多像对序列的操作,像索引、分片、看是否在字符串内、秋长度、最大值和最小值等。但是,字符串是不可修改的

A='abcd'
A[1]='2'
A 
## TypeError: 'str' object does not support item assignment
不支持修改字符串内单个字符

字符串方法:

前面介绍了列表的方法,字符串方法要更丰富些,字符串方法大部分来自于string模块,这里只介绍主要的集中字符串方法,有兴趣的可以查找全部方法(有太多字符串方法)

① find方法:在长字符串内查找子字符串,并返回子字符串最左端字母的索引位置;若没找到就返回-1.

A='abcd'
A.find('c')
Out[2]: 2 # c在索引为2的位置

A='abcd'
A.find('bc')
Out[3]: 1  #输出子串最左端索引

find 方法类似于 in操作符 ,查看成员资格,只是in 的结果输出 布尔值,即true 或false ;find直接输出字符位置

A='$$$ abcdef $$$'
A.find("$$$",1)
Out[5]: 11    # ‘1’表示提供起始点,从第一个索引开始查找字符

A='$$$ abcdef $$$'
A.find("$$$",1,12)
Out[6]: -1   # ‘1’和‘12’表示起始点和终点,在起始点和终点范围内查找 -1表示未查找该子字符串

② join方法:用来在队列中添加元素。与split方法操作相反

A=[1,2,3,4]
B="+"
B.join(A)
TypeError: sequence item 0: expected str instance, int found
# 因为A中是数字,数字不可连接 ,join只适用于字符串

 A=['1','2','3','4']
 B="+"
 B.join(A)
Out[9]: '1+2+3+4'  #join只适用于字符串

 A=['1','2','3','4']
 "/".join(A)
Out[10]: '1/2/3/4' #连接符可以替换

若想在‘1’前面也加上字符,可如下操作:
 A=['','1','2','3','4']
 "/".join(A)
Out[11]: '/1/2/3/4'  #在‘1’前加一个空白''

③ lower方法:返回字符串的小写字母

a='AbcDEF'
a.lower()
Out[13]: 'abcdef' #输入'AbcDEF'.lower()也可以

lower方法适用于 不区分大小写 的场景 

如果 数据库中存储的用户名字全是小写,像ab,bc cd...当你输入名字中有大写时,则查不到该用户,像输入Ab,BC等

A='Goon'
B=['goon','tom','peter']
if A.lower() in B:print('已找到')
已找到    #成功实现

A='Goon'
B=['goon','tom','peter']
if A.lower() in B:
    print('已找到')
已找到    #这样也能成功实现,但是去掉‘B’后的‘:’,则不能运行

④ replace方法:返回某子字符串在长字符串中所有匹配项被替换后的字符串。

'this is a boy'.replace('is','meme')
Out[22]: 'thmeme meme a boy'  

⑤ split方法:将字符串分割成序列,与join操作相反。

'1+2+3+4'.split('+')
Out[23]: ['1', '2', '3', '4'] 

'/1/2/3/4'.split('/')
Out[24]: ['', '1', '2', '3', '4']

'this is a boy'.split()
Out[25]: ['this', 'is', 'a', 'boy']
#如果不指定分隔符,默认把空格、制表、换行等当做分隔符

⑥ strip方法:返回除去两侧空格(不出去中间空格)。

strip方法和lower方法结合使用:假设用户不小心在名字后多输入一个空格

A='goon '      #用户名后万一多输入一个空格
B=['goon','tom','peter','tom']
if A in B:print("已找到")
else :print('未找到')
未找到        #为删除末尾空格,查找不到

if A.strip() in B :print("已找到")
else :print('未找到')
已找到        #删除末尾空格,能查找得到

可以指定删除的字符

'*/*this *is** a boy***/'.strip('*/')
Out[29]: 'this *is** a boy'  #只删除了两端的字符,中间的*没删除

⑦ translate方法

translate方法和replace方法类似,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符,并可以同时进行多个替换。

该方法适用于:例如替换换行符或某个特殊字符等。

在使用translate方法前,需要先完成一张转换表,转换表是以某字符替换某字符的对应关系,直接使用string模块里的maketrans函数,maketrans函数接受两个等长的字符串,表示第一个字符串中的字符都用第二个字符串替换。


from string import maketrans
table=maketrans('cs','kz')
'this is an incredible test'.translate(table)
ImportError: cannot import name 'maketrans' #会出现错误,从string导入maketrans函数不成功

table = str.maketrans('cs','kz')   
'this is an incredible test'.translate(table)
Out[34]: 'thiz iz an inkredible tezt'  #正确,把长字符串里的c换成k,s换成z。

猜你喜欢

转载自blog.csdn.net/Hellolijunshy/article/details/82250800