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'>

 

posted @ 2022-07-25 13:21  401561993  阅读(220)  评论(0编辑  收藏  举报