上一篇:详解字符串| 手把手教你入门Python之二十六
下一篇:详解字符集和编码规则| 手把手教你入门Python之二十八
本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。
字符串常见操作
字符串的常见操作包括:
获取⻓度: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函数可以获取字符串的⻓度。
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(len(mystr)) # 17 获取字符串的⻓度
⼆、 查找
查找相关的⽅法,使⽤⽅式⼤致相同,但是略有区别。
1. find
查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第⼀次出现的开始位置索引值,如果
不存在,则返回-1.
语法格式:
S.find(sub[, start[, end]]) -> int
示例:
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(mystr.find('好⻛光')) # 10 '好⻛光'第⼀次出现时,'好'所在的位置
print(mystr.find('你好')) # -1 '你好'不存在,返回 -1
print(mystr.find('⻛', 12)) # 15 从下标12开始查找'⻛',找到⻛所在的位置试15
print(mystr.find('⻛光',1,10)) # -1 从下标1开始到12查找"⻛光",未找到,返回 -1
2. rfind
类似于 find()函数,不过是从右边开始查找。
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(mystr.rfind('好')) # 14
3.index
跟find()⽅法⼀样,只不过,find⽅法未找到时,返回-1,⽽str未找到时,会报⼀个异常。
语法格式:
S.index(sub[, start[, end]]) -> int
4.rindex
类似于 index(),不过是从右边开始。
三、判断
python提供了⾮常丰富的⽅法,可以⽤来对⼀个字符串进⾏判断。
1. startswith
判断字符串是否以指定内容开始。 语法格式:
S.startswith(prefix[, start[, end]]) -> bool
示例:
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(mystr.startswith('今')) # True
print(mystr.startswith('今⽇')) # False
2. endswith
判断字符串是否以指定内容结束。
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(mystr.endswith('好⻛光')) #True
print(mystr.endswith('好⽇⼦')) #False
3. isalpha
判断字符串是否是纯字⺟。
mystr = 'hello'
print(mystr.isalpha()) # True
mystr = 'hello world'
print(mystr.isalpha()) # False 因为中间有空格
4. isdigit
判断⼀个字符串是否是纯数字,只要出现⾮0~9的数字,结果就是False.
mystr = '1234'
print(mystr.isdigit()) # True
mystr = '123.4'
print(mystr.isdigit()) # False
mystr = '-1234'
print(mystr.isdigit()) # False
5. isalnum
判断是否由数字和字⺟组成。只要出现了⾮数字和字⺟,就返回False.
mystr = 'abcd'
print(mystr.isalnum()) # True
mystr = '1234'
print(mystr.isalnum()) # True
mystr = 'abcd1234'
print(mystr.isalnum()) # True
mystr = 'abcd1234_'
print(mystr.isalnum()) # False
6. isspace
如果 mystr 中只包含空格,则返回 True,否则返回 False.
mystr = ''
print(mystr.isspace()) # False mystr是⼀个空字符串
mystr = ' '
print(mystr.isspace()) # True 只有空格
mystr = ' d'
print(mystr.isspace()) # False 除了空格外还有其他内容
四、count
返回 str在start和end之间 在 mystr⾥⾯出现的次数。
语法格式:
S.count(sub[, start[, end]]) -> int
示例:
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(mystr.count('好')) # 3. '好'字出现三次
五、替换
替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
newstr = mystr.replace('好', '坏')
print(mystr) # 今天天⽓好晴朗,处处好⻛光呀好⻛光 原字符串未改变!
print(newstr) # 今天天⽓坏晴朗,处处坏⻛光呀坏⻛光 得到的新字符串⾥,'好'被修改成了'坏'
newstr = mystr.replace('好','坏',2) # 指定了替换的次数
print(newstr) # 今天天⽓坏晴朗,处处坏⻛光呀好⻛光 只有两处的'好'被替换成了'坏'
六、内容分隔
内容分隔主要涉及到split,splitlines,partition和rpartition四个⽅法。
split
以指定字符串为分隔符切⽚,如果 maxsplit有指定值,则仅分隔 maxsplit+1 个⼦字符串。返回的结果是⼀个列表。
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
result = mystr.split() # 没有指定分隔符,默认使⽤空格,换⾏等空⽩字符进⾏分隔
print(result) #['今天天⽓好晴朗,处处好⻛光呀好⻛光'] 没有空⽩字符,所以,字符串未被分隔
result = mystr.split('好') # 以 '好' 为分隔符
print(result) # ['今天天⽓', '晴朗,处处','⻛光呀,'⻛光']
result = mystr.split("好",2) # 以 '好' 为分隔符,最多切割成3份
print(result) # ['今天天⽓', '晴朗,处处', '⻛光呀好⻛光']
rsplit
⽤法和split基本⼀致,只不过是从右往左分隔。
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(mystr.rsplit('好',1)) #['今天天⽓好晴朗,处处好⻛光呀', '⻛光']
splitlines
按照⾏分隔,返回⼀个包含各⾏作为元素的列表。
mystr = 'hello \nworld'
print(mystr.splitlines())
partition
把mystr以str分割成三部分,str前,str和str后,三部分组成⼀个元组
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(mystr.partition('好')) # ('今天天⽓', '好', '晴朗,处处好⻛光呀好⻛光')
rpartition
类似于 partition()函数,不过是从右边开始.
mystr = '今天天⽓好晴朗,处处好⻛光呀好⻛光'
print(mystr.rpartition('好')) # ('今天天⽓好晴朗,处处好⻛光呀', '好', '⻛光')
七、修改⼤⼩写
修改⼤⼩写的功能只对英⽂有效,主要包括,⾸字⺟⼤写capitalize,每个单词的⾸字⺟⼤写title,全⼩写lower,
全⼤写upper.
capitalize
第⼀个单词的⾸字⺟⼤写。
mystr = 'hello world'
print(mystr.capitalize()) # Hello world
title
每个单词的⾸字⺟⼤写。
mystr = 'hello world'
print(mystr.title()) # Hello World
lower
所有都变成⼩写。
mystr = 'hElLo WorLD'
print(mystr.lower()) # hello world
upper
所有都变成⼤写。
mystr = 'hello world'
print(mystr.upper()) #HELLO WORLD
⼋、空格处理
Python为我们提供了各种操作字符串⾥表格的⽅法。
1. ljust
返回指定⻓度的字符串,并在右侧使⽤空⽩字符补全(左对⻬)。
str = 'hello'
print(str.ljust(10)) # hello 在右边补了五个空格
2. rjust
返回指定⻓度的字符串,并在左侧使⽤空⽩字符补全(右对⻬)。
str = 'hello'
print(str.rjust(10)) # hello在左边补了五个空格
3. center
返回指定⻓度的字符串,并在两端使⽤空⽩字符补全(居中对⻬)
str = 'hello'
print(str.center(10)) # hello 两端加空格,让内容居中
4. lstrip
删除 mystr 左边的空⽩字符。
mystr = ' he llo '
print(str.lstrip()) #he llo 只去掉了左边的空格,中间和右边的空格被保留
5. rstrip
删除 mystr 右边的空⽩字符。
mystr = ' he llo '
print(str.rstrip()) # he llo右边的空格被删除
6. strip
删除两断的空⽩字符。
str = ' he llo '
print(str.strip()) #he llo
字符串拼接
把参数进⾏遍历,取出参数⾥的每⼀项,然后再在后⾯加上mystr
语法格式:
S.join(iterable)
示例:
mystr = 'a'
print(mystr.join('hxmdq')) #haxamadaq 把hxmd⼀个个取出,并在后⾯添加字符a. 最后的 q 保
留,没有加 a
print(mystr.join(['hi','hello','good'])) #hiahelloagood
作⽤:可以把列表或者元组快速的转变成为字符串,并且以指定的字符分隔。
txt = '_'
print(txt.join(['hi','hello','good'])) #hi_hello_good
print(txt.join(('good','hi','hello'))) #good_hi_hello
字符串运算符
- 字符串和字符串之间能够使⽤加法运算符,作⽤是将两个字符串拼接成为⼀个字符串。例
如: 'hello' + 'world' 的结果是 'helloworld' - 字符串和数字之间可以做乘法运算,结果是将指定的字符串重复多次。例如: 'hello'*2 的结果
是 hellohello - 字符串和字符串之间,如果使⽤⽐较运算符进⾏计算,会获取字符对应的编码,然后进⾏⽐较。
- 除上述⼏种运算符以外,字符串默认不⽀持其他运算符。