字符串常见操作

获取长度:len
查找内容:find,index,rfind,rindex
判断:startswith,endswith,isalpha,isdigit,isalnum,isspace
计算出现次数:count
替换内容:replace
切割字符串:split,rsplit,splitlines,partition,rpartition
修改大小写:capitalize,title,upper,lower
空格处理:ljust,rjust,center,lstrip,rstrip,strip
字符串拼接:join

注意:在Python中,字符串是不可变的!
所有的字符串相关方法,都不会改变原有的字符串,都是返回一个个结果,
在这个新的返回值里,保留了执行后的结果!
一、 len

len函数可以获取字符串的长度。
输入

dalao = '电影主角没有郑佳雨当主角的我不看!'
print(len(dalao)) # 17 获取字符串的长度

二,查找

查找相关的⽅法,使⽤⽅式⼤致相同,但是略有区别。

  1. find()

查找指定内容在字符串中是否存在,存在返回该内容在字符串中第一次出现的开始位置索引值,
不存在,则返回-1.
语法格式:

S.find(sub[, start[, end]]) -> int
dalao = '这世界那么多人'
#        0 1 2 3 4 5 6
print(dalao.find('这'))#0  '这'第一次出现时,'这'所在的下标 0
print(dalao.find('大佬'))#-1  '大佬'不存在,返回 -1
print(dalao.find('人', 3))#6  从下标3开始查找'人',找到“人”所在的下标是6
print(dalao.find('晴朗',1,5))#-1 从下标1开始到下标5查找"晴朗",未找到,返回 -1
  1. rfind()

类似于 find()函数,不过是从右边开始查找。
返回来的也是下标【第几个】
所有的下标数,都是从左开始数数 输入

dalao = '这世界那么多人'
#        0 1 2 3 4 5 6
print(dalao.rfind('人')) # 6

找一个字符串中没有的字

dalao = '这世界那么多人'
#        0 1 2 3 4 5 6
print(dalao.rfind('狼')) # -1

3.index()
跟find()方法一样,只不过,find方法未找到时,返回-1,而index()str未找到时,会报一个异常。
语法格式:

S.index(sub[,start[,end]]) -> int

输入

dalao = '这世界那么多人'
#        0 1 2 3 4 5 6
print(dalao.index('人'))#6
print(dalao.rindex('人'))#6
print(dalao.index('狼'))

输出

6
6
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\new2.py", line 3, in <module>
    print(dalao.index('狼')) 
ValueError: substring not found

4.rindex()

类似于 index(),不过是从右边开始。

三,判断
python提供了丰富的方法,可以用来对一个字符串进行判断.

  1. startswith()

判断字符串是否以指定内容开始。
语法格式:

S.startswith(prefix[, start[, end]]) -> bool
dalao = '和小姐姐裸聊,结果是女装大佬,还天天要我刷游艇!犯罪吗?'
print(dalao.startswith('和')) #True
print(dalao.startswith('犯罪吗')) #False
  1. endswith()
    判断字符串是否以指定内容结束。
    输入
dalao ='往同学杯子里面吐口水构成犯罪吗?'
print(dalao.endswith('犯罪吗?')) #True
print(dalao.endswith('犯罪的!')) #False
  1. isalpha()

判断字符串是否是纯字母。

dalao = 'niuniu'
print(dalao.isalpha()) #True
dalao2 = 'niu niu'
print(dalao2.isalpha())#False  因为中间有空格 注册游戏名字时候会用到-不能有空格

4.isdigit()
判断一个字符串是否是纯数字,只要出现非0-9的数字,结果就是False.
输入

dalao = '12345567890'
print(dalao.isdigit()) #True
dalao2 = '3.14159265258979323846'
print(dalao2.isdigit()) #False

5.isalnum()
判断是否由数字和字母组成,只要出现了非数字和字母,就返回False
输入

dalao = 'awesome'
print(dalao.isalnum())# True
dalao = '1234567890'
print(dalao.isalnum())# True
dalao = 'dalao1234567890'
print(dalao.isalnum())# True
dalao = 'a1_'
print(dalao.isalnum())# False

6.isspace()
如果dalao中只包含空格,则返回True,否则返回False.
输入

dalao = ''
print(dalao.isspace()) # False  空字符串,并不是空格
dalao = '      '
print(dalao.isspace())# True  全是空格
dalao = '    dalao   '
print(dalao.isspace())# False  含有其他内容

四,count()
语法格式:
S.count(sub[,start[,end]]) -> int
count返回str【字符串数据】在start和end之间,在dalao里面出现的次数.
输入

dalao="012345AA"#下标为0-7,共8个数字

print(dalao.count('A',1,6))#0 “A” 出现了0次
print(dalao.count('A',1,7))#1  标记的结束位置,是不计算在内
print(dalao.count('A',1,8))#2  超过了下标的最大数,表示从起始下标至末尾所有
print(dalao.count('A',1))#2  不写结束表示从起始下标至末尾所有

五 替换
replace()
replace(‘旧’,‘新’)
replace(‘旧’,‘新’,[更换的次数])
替换内容替换字符串中制定的内容,指定次数count,则替换不会超过count次。
输入

dalao = '这世界那么多AAA'
print(dalao.replace('A','B'))  #这世界那么多BBB  
print(dalao.replace('A','B',1)) #这世界那么多BAA--从左开始找到后仅修改一个
print(dalao)# 这世界那么多AAA   ---没有修改dalao变量中的数据

六 内容分隔
内容如分隔涉及到 split , splitlines , partition ,rpartition .四个方法
split()
以指定字符串为分割符切片,如果maxsplit有指定值,则仅分割maxsplit+1 个字符串。
返回的结果是一个列表,

split()

dalao = 'A1A2A3A4A5A'
dajie = dalao.split() # 没有指定分隔符,默认使用空格,换行等空白字符串进行分隔。  
print(dajie) # ['A1A2A3A4A5A']
dajie = dalao.split('3') # 以‘3’为分隔符
print(dajie) #['A1A2A', 'A4A5A']
dajie= dalao.split("A",2) #以“A”为分隔符,最多切割2刀,分成3份
print(dajie) #['', '1', '2A3A4A5A']
dajie= dalao.split("A") #见到A就砍一刀,有连续的A就多一个空的字符串
print(dajie) #['', '1', '2', '3', '4', '5', '']

rsplit()
用法和split基本一致,只是从右往左分隔。

splitlines()
按照[行]与[换行符号]分隔,返回一个包含各种行为元素的列表。
输入

dalao="""这
世\n界
那么多人"""
dajie =dalao.splitlines()
print(dajie)
#['这', '世', '界', '那么多人']

上面一共有3行,其中\n也属于一个换行符,需要添加一行,共4行

partition()
把dalao以str分隔成三部分,str前,str,str后。
该字符串前面的 该字符串 字符串之后的 三部分组成一个元组
输入

dalao = '拐卖阴阳人,这属于拐卖妇女儿童罪吗?'
print(dalao.partition('卖'))
#('拐', '卖', '阴阳人,这属于拐卖妇女儿童罪吗?')

rpartition
类似partition()函数,只是从右边开始。

dalao = '拐卖男人,这个属于拐卖妇女儿童罪吗?不属于!那么就没有保护男人的吗?不是的,这只是构成另外一个罪名。'
print(dalao.rpartition("不"))
#('拐卖男人,这个属于拐卖妇女儿童罪吗?不属于!那么就没有保护男人的吗?', '不', '是的,这只是构成另外一个罪名。')

七,修改大小写
修改大小写的功能只对英文有效,主要包括,
capitalize() 首字母大写
title() 每个单词首字母大写
lower() 全小写
upper() 全大写
输入

dalao = "luck you vERY much"
print(dalao.capitalize())  # Luck you very much
print(dalao.title())  #  Luck You Very Much
print(dalao.lower())  #  luck you very much
print(dalao.upper())  #  LUCK YOU VERY MUCH

八,空格处理 我逛色情网站看到我自己,还一夜八百量大从优??
字符串里表格的方法。
ljust() 返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)
rjust() 返回指定长度字符串,并在左侧使用空白字符补全(右对齐)
center() 返回指定长度字符串,并在两段使用空白字符补全(居中对齐)
lstrip() 删除dalao左边的空白字符
rstrip() 删除dalao右边的空白字符
strip() 删除两端的空白字符

ljust() rjust() center()

dalao = 'abc'
#        012   共3个字符 
print(dalao.ljust(10)+'羊肉串') #右边补全7个字符串 为了显示明显加上‘羊肉串’
print(dalao.rjust(10)+'羊肉串') #左边补全7个字符串
print(dalao.center(10)+'羊肉串') # 两段使用空白字符补全(居中对齐) 前面补了3个空格   后面补了4个空格 说明多出的一个在后面补上

输出

abc       羊肉串
       abc羊肉串
   abc    羊肉串

lstrip() rstrip() strip()

dalao = ' a b c '
print(dalao.lstrip()+'羊肉串') #删除dalao左边的空白字符
print(dalao.rstrip()+'羊肉串') #删除dalao右边的空白字符
print(dalao.strip()+'羊肉串') #删除两端的空白字符

输出

a b c 羊肉串
 a b c羊肉串
a b c羊肉串