内容正文:
专题五 Python 字符串
[考纲要求]
1.了解字符串的定义
2.掌握字符串的特性
3.掌握字符串的索引和切片
4.掌握字符串函数
[课时安排]
2课时
[知识梳理]
字符串定义
字符串使用单引号、双引号(2个单引号或2个双引号)或三引号(3个单引号或3个双引号)括起来的任意文本
单行字符串 'hello'、"hello"
多行字符串:
a="""
hello world
hello python
"""
b = '''
hello world
hello python
'''
字符串是有序序列,字符串是一种不可变的对象,字符串中的字符是不能被改变的,每当修改字符串时都将生成一个新的字符串对象
字符串的函数为str( )函数,能够将整型或其他序列转为字符串
字符串是不可变的数据类型,因此不能删除、添加、修改字符。
如果想要删除所有的字符,可以将一个空字符串赋值给原字符串变量
字符串索引(下标)
访问字符串上的指定字符,其语法格式如下:
字符串[索引]
举例说明:S="python"
S[0] S[1] S[2] S[3] S[4] S[5]
p
y
t
h
o
n
S[-6] S[-5] S[-4] S[-3] S[-2] S[-1]
从上面可以看出:
· 最后一个字符的索引为-1
· 当索引为正整数,那么最后一个字符的索引是字符串的长度减1
· 求字符串的长度使用内置函数len( )求出。
那么最后一个字符的索引是len(S)-1或者是-1
· 无论使用正向索引还是反向索引,索引值都不能越界。否则将会出现错误信息”IndexError:string index out of range”,即字符串索引超出范围。
>>> s="Hello Python"
>>> s[0]
'H'
>>> s[1]
'e'
>>> s[-1]
'n'
>>> s[-2]
'o'
>>> s[12]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>>
注意:因为字符串属于不可变对象,所以索引只能读取字符串指定位置上的字符,而不能修改该位置上的字符。即字符串不支持赋值操作。
字符串切片
如果要从字符串中提取一部分字符串(子串),则可以通过切片(slice)操作来实现,其一般语法格式如下:
字符串对象[开始位置:结束位置:步长]
格式说明:不包含结束位置的索引,步长默认为1一般省略不写。
步长大于0:表示自左往右切片
步长小于0:表示自右往左切片
索引取值方向和步长的取值方向一致,否则取不到值。
当开始位置的索引为0,可以省略不写
当结束位置的索引是取到最后字符的时候,可以省略不写。
当步长step=1(一般省略不写)的时候:
当步长step>1的时候表示每次索引取值的差值。例如step=2第一个取值索引为0那么下一个取值索引为2,以此类推。
上面的索引取值分别为: 1 4 7 10
当步长step<0的时候,需要注意的是索引的切片方向也是自右往左切片,否则取不到值
进阶使用:
字符串取切片,也可以使用负数的索引,也可以使用正负索引搭配使用。因此取切片也是比较灵活的。如何快速方便的取切片,就得正负灵活使用。
我们使用负的索引来倒序取切片
总结:切片的取值,需要大家多加练习,才能应用自如。
重点:
字符串的头尾取决于步长的方向,如果步长大于1,则左侧为头右侧为尾,如果步长小于1则右侧为头,左侧为尾。例如:
st[:3:-2] 表示从右侧的头取切片到左侧的索引3结束
字符串连接和重复
字符串的连接可以使用加法运算符”+”或乘法运算符”*”来实现。
加法运算符可以将两个字符串连接成一个新的字符串,乘法运算符可以将一个字符串自身重复连接若干次形成一个新的字符串。
字符串连接
注意:运算符”+”两侧必须是相同数据类型,若将字符串与数值连接,就需要用内置函数str( )将数值转为字符串。
>>> str(2024)+“年”+str(9)+“月”
>>>2024年9月
重复连接
字符串*正整数 (正整数*字符串)
举例:
>>> str1 = "python"
>>> str1*3 # 3*str1
'pythonpythonpython'
字符串比较和判断子串
字符串的关系运算主要包括:1.字符串比较. 2.成员运算符in来判断一个字符串是不是另外一个字符串的子串。
1.比较字符串
将两个字符串从左向右逐个进行比较,直到比较出哪边对应的字符ASCII值大则哪边的字符串大。
>>> "hella">"hellb"
False
>>> "abc">"bbc"
False
>>> "abc">"bad"
False
比较两个长度不相同的字符串时,首先在较短的字符串尾部补上一些空格字符,使两个字符串具有相同的长度,然后再使用上面的规则进行比较。
2.判断子串
使用成员运算符判断一个字符串是否为另一个字符串的子串。
>>> 'yt' in 'python'
True
>>> 'mn' in 'python'
False
字符串函数
1.str.upper() 字母全部转为大写
2.str.lower() 字母全部转为小写
3.str.swapcase() 大小写字母互换
4.str.title() 每个单词的首字母大写,其余字母均为小写
5.str.find(substr[,start,end]) 用于检测substr 是否在str中,若在则返回第一次出现的索引值,否则返回-1。若用start和end指定范围,则在str[start:end]中搜索,不包含end的位置。
6. str.index(substr[,start,end]) 用法与find()基本相同,区别在于当substr不在str中会报一个异常
7.str.count(substr[,start,end])用于返回substr在str中出现的次数,若用start和end指定范围,则返回在str[start:end]中出现的次数。
8.str.replace(old,new[,count=-1])用于替换指定的字符串中的子串,默认替换全部子串。(值-1表示全部替换),replace函数也可以用于删除指定字符串。
9.str.split(sep[,maxsplit=-1])以sep为分隔符将str拆分成列表,默认的分隔符为空格;num指定拆分的次数,默认值为-1表示无限制拆分
10.s.join(seq)以s作为分隔符,将序列seq中的所有元素合并成一个新的字符串。
seq可以是字符串、列表、元组等。但是需要注意的是列表、元组里面的元素必须是字符串类型,才能拼接否则不能拼接。
11. str.isalnum( )字符串str中全是字母或数字则返回True,否则返回False
12.str.isalpha( )字符串str中全是字母则返回True,否则返回False
13.str.isdigit( )字符串str中只包含数字则返回True,否则返回False
14.str.islower( )字符串str中的字母全是小写字母(前提是有字母),则返回True,否则返回False
15. str.isupper( )字符串str中的字母全是大写字母(前提是有字母),则返回True,否则返回False
16.str.isspace( )字符串str中只包含空格,则返回True,否则返回False
[限时练习]
1.下面关于字符串说法错误的是( )
A. 字符串是不可变数据类型
B. 字符串支持索引和切片的操作
C. 任意长度的字符串最后一个字符的索引为-1
D. 字符串里面的字符可以被修改
【答案】D
【解析】字符串是不可变数据类型,里面的字符不能被修改和删除
分别写出下面表达式的运行结果
2.print("hello world"[4])
【答案】"o"
【解析】自左往右索引从0开始,因此取到字符o
3.print("hello world"[6:])
【答案】"world"
【解析】省略结束索引表示取到字符串的末尾
4.print("hello world"[:5])
【答案】"hello"
【解析】省略开始位置索引表示从字符串的头(这里是索引0)取切片
5.print("hello world"[2:6])
【答案】"llo "
【解析】不包含索引6位置的字符,空格也是一个字符,不能漏掉了
6.print("hello world"[2:10:2])
【答案】"lowr"
【解析】步长为2表示每隔2个字符取一个字符
7.print("hello world"[5:11:-2])
【答案】""
【解析】由于切片方向和步长的切片方向不一致,因此取不到任何字符
8.print("hello world"[11:2:-2])
【答案】"drwo"
【解析】步长为-2表示从右往左取切片,不包含索引2位置的字符
9.print("hello world"[11::-3])
【答案】"dooe"
【解析】步长为-3表示从右往左取切片,一直取到字符串的末尾(这里的末尾是索引0)
10.print("hello world"[:2:-3])
【答案】"doo"
【解析】步长为-3表示从右往左取切片,从字符串的头(字符d)开始到索引2结束不包含索引2
11.print("hello world"[::-1])
【答案】"dlrow olleh"
【解析】步长为-1,省略开始和结束索引表示倒序取出整个字符串
12.
st1="hello world"
st2="say python"
print(st1[3:]+st2[4:])
【答案】"lo worldpython"
【解析】st1[3:]的值为"lo world" st2[4:]的值为"python" 字符串拼接之后为"lo worldpython"
13.print("he"*2+"py"*3)
【答案】"hehepypypy"
【解析】"he"*2的值为"hehe" "py"*3的值为"pypypy" 拼接之后为"hehepypypy"
[归纳小结]
学科网(北京)股份有限公司
$$