字符串的索引与切片
- 字符串的索引访问
Python语言中的字符串包括两种符号体系:正向递增序号和反向递减序号。
如下图所示:1
2
3
4
5
6
7
8
9'Hello World' s=
0] s[
'H'
1] s[-
'd'
8] s[
'r'
3] s[-
'r'
- 字符串的切片访问
具体语法格式为: [头下标:尾下标]
,这种访问方式称之为“切片”。但注意,这是左闭右开的区间。在切片方式中,若头下标缺省,表示从字符串的开始取子串;若尾下标缺省,表示取到字符串的最后一个字符;若头下标和尾下标都缺省,则取整个字符串。
示例:1
2
3
4
5
6
7
8
9
10
11'Hello Mike' s=
0:5] s[
'Hello'
6:-1] s[
'Mik'
5] s[:
'Hello'
6:] s[
'Mike'
s[:]
'Hello Mike'
字符串切片还可以设置取子字符串的顺序,格式为 [头下标:尾下标:步长]
。当步长大于0的时候,从左往右取字符;当步长小于0的时候,从右往左取字符。
示例:1
2
3
4
5
6
7
8
9
10
11'Hello Mike' s=
0:5:1] s[
'Hello'
0:6:2] s[
'Hlo'
0:6:-1] s[
''
4:0:-1] s[
'olle'
4::-1] s[
'olleH'
字符串的处理与操作
- 内置字符串处理函数
len(x) #返回字符串x的长度
str(x) #将任意类型的x转化为字符串类型
chr(x) #返回Unicode编码为x的字符
ord(x) #返回字符x的Unicode编码
hex(x) #将整数x转化为十六进制数
oct(x) #将整数x转化为八进制数
示例:1
2
3
4
5
6
7
8
9
10
11
12
13'Hello World' s=
len(s)
11
str(120)
'120'
str(3+5)
'8'
hex(62)
'0o76'
ord('A')
65
chr(65)
'A'
- 查找类函数
find() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中首次出现的位置,若不存在则返回-1.
rfind() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中最后一次出现的位置,若不存在则返回-1.
index() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中首次出现的位置,若不存在则抛出异常.
rindex() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中最后一次出现的位置,若不存在则抛出异常.
count() #用来返回一个字符串在另一个字符串中出现的次数,若不存在则返回0.
示例:1
2
3
4
5
6
7
8
9
10
11
12
13'bird,fish,monkey,rabbit' s=
'b') s.find(
0
'fish') s.rfind(
8
'tiger') s.rfind(
-1
'tiger') s.index(
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
'b') s.count(
3
- 分割类函数
split() #以指定字符为分隔符,从原字符串的左端开始将其分割为多个字符串,并返回包含分割结果的列表.
rsplit() #以指定字符为分隔符,从原字符串的右端开始将其分割为多个字符串,并返回包含分割结果的列表.
partition() #以指定字符串为分隔符将原字符串分割为3个部分,分隔符之前的字符串,分隔符字符串和分隔符之后的字符串.
rpartition() #以指定字符串为分隔符将原字符串分割为3个部分,分隔符之前的字符串,分隔符字符串和分隔符之后的字符串.
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18'bird,fish,monkey,rabbit' s=
',') s.split(
['bird','fish','monkey','rabbit']
'I am a girl' s=
' ') s.split(
['I','am','a','girl']
' ') s.rsplit(
['I','am','a','girl']
2) s.split(maxsplit=
['I','am','a girl'] #此时以空白来从左往右分割, 'maxsplit=2'说明最多分割两次.
2) s.rsplit(maxsplit=
['I am','a','girl'] #此时以空白来从右往左分割.
'fish') s.partition(
('I am a girl','','')
'a') s.partition(
('I ','a','m a girl')
'am') s.partition(
('I ','am',' a girl')
- 字符串连接方法
join() #将列表中多个字符串进行连接,并在相邻两个字符串之间插入指定字符,返回新字符串.
示例:1
2
3
4
5'apple','banana','pear','peach'] s=[
':'.join(s)
'apple:banana:pear:peach'
'-'.join(s)
'apple-banana-pear-peach'
- 大小写字符转换方法
lower() #将字符串转换为小写字符串.
uppper() #将字符串转换为大写字符串.
capitalize() #将字符串首字母变为大写.
title() #将字符串中每个单词的首字母都变为大写.
swapcase() #将字符串中的字符大小写互换.
示例:1
2
3
4
5
6
7
8
9
10
11'I have two big eyes' s=
s.lower()
'i have two big eyes'
s.upper()
'I HAVE TWO BIG EYES'
s.capitalize()
'I have two big eyes'
s.title()
'I Have Two Big Eyes'
s.swapcase()
'i HAVE TWO BIG EYES'
- 替换方法
replace() #替换字符串中指定字符或子字符串
示例:1
2
3'I have two big eyes' s=
'big','大') s.replace(
'I have two 大 eyes'
- 删除字符串两端、右端或左端连续空白字符和指定字符方法
strip() #删除字符串两端空白字符.
rstrip() #删除字符串右端空白字符.
lstrip() #删除字符串左端空白字符.1
2
3
4
5
6
7
8
9
10' abc ' s=
s.strip()
'abc'
s.rstrip()
' abc'
s.lstrip()
'abc '
'====mike====' s=
'=') s.strip(
'mike'
- 判断字符串是否以指定字符串开始或结束
startswith() #判断字符串是否以指定字符开始.
endswith() #判断字符串是否以指定字符结束.1
2
3
4
5
6
7'Python 程序设计.py' s=
'py') s.startswith(
False
'Python') s.startswith(
True
'py') s.endswith(
True
- 判断字符串类型方法
isupper() #是否全为大写.
islower() #是否全为小写.
isdigit() #是否全为数字.
isalnum() #是否全为字母或汉字或数字.
isalpha() #是否全为字母或汉字.
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20'years' s=
s.islower()
True
'YEARS' s=
s.isupper()
True
'20241022' s=
s.isdigit()
True
'I am a girl' s=
s.isalpha()
False
' ','') s=s.replace(
s.isalpha()
True
s.isalnum()
False
- 字符串排版方法
center() #字符串居中对齐.
ljust() #字符串居左对齐.
rjust() #字符串居右对齐.
zfill() #输出指定宽度,不足的左边填0.
示例:1
2
3
4
5
6
7'hello mike' s=
30.'=') s.center(
'==========hello mike=========='
20,'*') s.rjust(
'**********hello mike'
20) s.zfill(
'0000000000hello mike'