- 零基础学Python(第2版)
- 黄传禄 张克强 赵越
- 1025字
- 2025-03-22 17:27:07
6.1.4 字符串的截取
字符串的截取是实际应用中经常使用的技术,被截取的部分称为“子串”。Java使用函数substr()获取子串,C#使用函数substring()获取子串。而Python由于内置了序列,所以可以通过前面介绍的索引、切片获取子串,也可以使用函数split()来获取。字符串也属于序列,下面这段代码使用序列的索引获取子串。
01 # 使用索引截取子串 02 word = "world" 03 print (word[4])
【代码说明】第3行代码访问字符串第5个字符的值。输出结果为“d”。
通过切片可以实现对字符串有规律的截取。切片的语法格式如下所示。
string[start : end : step]
【代码说明】string表示需要取子串的源字符串变量。[start:end:step]表示截取从string的第start个索引开始到第end个索引之间的子串,截取的步长是step,即每次截取字符string[start+step],直到第end个索引。索引从0开始计数。
下面这段代码演示了使用切片截取子串的功能。
01 # 使用特殊切片截取子串 02 str1 = "hello world" 03 print (str1[0:3]) 04 print (str1[::2]) 05 print (str1[1::2])
【代码说明】
·第3行代码,截取字符串中第1个字符到第3个字符之间的部分。输出结果为“hel”。
·第4行代码,[::2]切片省略了开始和结束字符。从字符串的第1个字符开始,以2为步长逐个截取字符。输出结果为“hlowrd”。
·第5行代码,切片中的数字1表示从字符串的第2个字符开始取字符,数字2表示以2为步长逐个截取字符。输出结果为“el ol”。
如果要同时截取多个子串,可以使用函数split()实现。函数split()的声明如下所示。
split([char] [,num])
【代码说明】
·参数char表示用于分割的字符,默认的分割字符是空格。
·参数num表示分割的次数。如果num等于2,将把源字符串分割为3个子串。默认情况下,将根据字符char在字符串中出现的个数来分割子串。
·函数的返回值是由子串组成的列表。
下面这段代码演示了split()的使用。
01 # 使用split()获取子串 02 sentence = "Bob said: 1, 2, 3, 4" 03 print ("使用空格获取子串:", sentence.split()) 04 print ("使用逗号获取子串:", sentence.split(",")) 05 print ("使用两个逗号获取子串:", sentence.split(",", 2))
【代码说明】
·第3行代码根据空格来获取子串。字符串sentence中有5个空格,将返回由6个子串组成的列表。输出结果:
使用空格获取子串: ['Bob', 'said:', '1,', '2,', '3,', '4']
·第4行代码根据逗号来获取子串。字符串sentence中有3个空格,将返回由4个子串组成的列表。输出结果:
使用逗号获取子串: ['Bob said: 1', ' 2', ' 3', ' 4']
·第5行代码根据逗号来分割字符串,并把字符串sentence分割为3个子串。输出结果:
使用两个逗号获取子串: ['Bob said: 1', ' 2', ' 3, 4']
字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。
01 str1 = "a" 02 print (id(str1)) 03 print (id(str1 + "b"))
【代码说明】
·第2行代码输出str1的内部标识。输出结果为2787481021552。
·第3行代码进行字符串连接,新的字符串将获得新的标识。输出结果为2787490433456。