python中对字符串的常见操作
我这里只总结了一些常用的操作
(对字符串的操作方法,是生成了新的字符串,原来的字符串还是原来的地址及内容)
str = 'dalinqinnian' s1 = str.capitalize() #首字母大写 print(s1) S2 = str.upper() #全大写 s3 = str.lower() #全小写 str2 = 'da2lin4qin6nian ' s4 = str2.title() #非字母隔开首字母大写
Dalinqinnian
DALINQINNIAN
dalinqinnian
Da2Lin4Qin6Nian
去除字符左右空格,换行符,制表符(默认)
str2 = 'da2lin 4qin6nian ' s4 = str2.strip() #去除左右的空格、换行符、指标符,中间的去不了 print(s4) str3 = ' da2lin 4qin6nian ' s5 = str3.strip() print(s5) #还可以去除字符串中制定的字符内容,中间空格去不掉 s6 = str3.strip('dlqn ')#去除的逻辑是从dlqn 中dn,lq,前后一组依次进行去除,(使用场景少,有局限性) print(s6)
s7 = str3.strip('dlqnn')#去除的字符为基数,不成组的,后面的去除就停止了(使用场景少,有局限性)
da2lin 4qin6nian
da2lin 4qin6nian
a2lin 4qin6nia
只去除左边的空格,换行符,制表符(默认),或只去除右边边的空格,换行符,制表符(默认)
s5 = str3.lstrip() s6 = str3.rsplit() print(s5)
最常用的split,字符串分割,将str类型,输出为list列表数据类型(用什么元素将字符串分割为列表数据)
str3 = 'da lin qin nian' s5 = str3.split()#默认按照空格分割,也可指定 print(s5) print(type(s5))
['da', 'lin', 'qin', 'nian']
<class 'list'>
注意上面的分割,如何分割元素为n,则分割的结果数量为n+1,会有一个为空的字符串
str3 = '@da@lin@qin@nian' s5 = str3.split('@') print(s5) ['', 'da', 'lin', 'qin', 'nian'] <class 'list'>
同样还可以指定分割的次数
str3 = '@da@lin@qin@nian' s5 = str3.split('@',1) print(s5)
['', 'da@lin@qin@nian']
#还可以从右边的第一个@来分割
s5 = str3.rsplit('@',1)#从右边
s5 = str3.lsplit('@',1)#从左边(split默认是从左)
# 注意这里是无法像字符串切片的形式,以‘步长’的形式去分割!!!
分割之后就是连接,join(不可迭代对象不可以,如bool值和数字类型)将可迭代对象拼接对字符串,可对str拼接,也可对列表进行输出字符串
str3 = 'dalinqinnian' s5 = '@'.join(str3) print(s5) d@a@l@i@n@q@i@n@n@i@a@n
list1 = ['da', 'lin', 'qin', 'nian'] #注意列表里面的元素必须都为字符串类型才可以
s6 = '$'.join(list1)
print(s6)
print(type(s6))
da$lin$qin$nian
<class 'str'>
判断以什么为开始,以什么为结束startswith() endswith(),返回bool值
str3 = 'dalinqinnian' s5 = str3.startswith('d')
s4 = str3.startswith('da')
s6 = str3.endswith('n') print(s5, s4, s6)
True True True
str3 = 'dalinqinnian'
s7 = str3.startswith('n', 4, 6) #下标范围是否是以什么开始,顾首不顾尾,注意这不是:是逗号
print(s7)
True
按照元素找下标或索引find,index;find如果找不到会返回-1,index找不到会报错,用find场景多一些
str3 = 'dalinqinnian' s7 = str3.find('l')
s8 = str3.find('lin') #返回的下标也是2,找到第一个就返回
print(s7, type(s7))
2 <class 'int'> 2
#还可以使用索引
s9 = str3.find('n',2,) #找到第二个n ,记得后面后面的逗号,是第二n到结束
print(s9)
#index,找不到报错
str3 = 'dalinqinnian'
s7 = str3.find('s')
print(s7)
s8 = str3.index('s')
print(s8)
-1
Traceback (most recent call last):
File "C:\Users\admin\PycharmProjects\pythonProject\main.py", line 48, in <module>
s8 = str3.index('s')
ValueError: substring not found
字符串替换replace
str3 = '我是河北人' s7 = str3.replace('河北', '山东')#河北和山东的位置不能换,把谁替换成谁,山东放前面不会报错,但也不会执行替换 print(s7) 我是山东人
str3 = '我吃包子,包子好吃,下次还吃包子'
s7 = str3.replace('包子', '饺子', 1) #可以标记替个数,从左到右,必须是正数
print(s7)
我吃饺子,包子好吃,下次还吃包子
format 字符串占位符
str = '早上吃{},中午吃{},晚上吃{}' str1 = str.format('油条', '米饭', '火锅') print(str1) 早上吃油条,中午吃米饭,晚上吃火锅
str = '早上吃{0},中午吃{1},晚上吃{2}{2}{2}{2}{0}' #类似下标的这种方式更灵活
str1 = str.format('油条', '米饭', '火锅')
print(str1)
早上吃油条,中午吃米饭,晚上吃火锅火锅火锅火锅油条
str = '早上吃{zao},中午吃{zhong},晚上吃{wan}' #这样可以不用按位置传参
str1 = str.format(zao='油条', wan='火锅', zhong='米饭')
print(str1)
is系列,是否是由字母数字组成,是否是字母组成,是否是数字组成,返回bool值
s = 'ddd3333gjijg' print( s.isalnum()) #是否数字字母组成 print(s.isalpha()) #是否字母组成 print(s.isdigit()) #是否数字组成 True False False
某个字符在字符串中出现的次数count
s = 'ddd3333gjijg ' print(s.count('3')) 4 返回int数据类型
公共方法,不是字符串的点方法,列表也可以用,字符串有多少个字符len(字符串),返回int数据类型
s = 'ddd3333gjijg '
print(len(s),type(len(s)))
#多少个字符组成,空格也算一个字符 13 <class 'int'>