字符串的截取

字符串的截取是实际应用中经常使用的技术,被截取的部分称为“子串”。Java中使用函数substr()获取子串,C#使用函数substring()获取子串。而Python由于内置了序列,可以通过前面介绍的索引、切片获取子串,也可以使用函数split()来获取。字符串也属于序列。

下面这段代码使用序列的索引获取子串:

 

# 使用索引截取子串

print('----------# 使用索引截取子串---------')

word = 'world'

print(word[4])

【代码说明】第4行代码,访问字符串第5个字符的值。输出结果为“d”。

【运行结果】

 通过切片可以实现对字符串有规律的截取。切片的语法格式如下所示。

string[start : end : step]

【代码说明】其中string表示需要取子串的源字符串变量。[start:end:step]表示从string的第start个索引位置开始到第end个索引之间截取子串,截取的步长是step。即每次截取字符string[start+step],直到第end个索引。索引从0开始计数。

下面这段代码演示了使用切片截取子串的功能:

 

# 特殊切片截取子串

print('---------# 特殊切片截取子串----------')

str1 = 'hello world'

print(str1[0:3])

print(str1[::2])

print(str1[1::2])

str2 = 'ABCDEFG'

print(str2[:3])

print(str2[3:])

print(str2[::2])

print('-----------------------------------')

【代码说明】

第10行代码,截取字符串中第1个字符到第3个字符之间的部分。

第11行代码,[::2]切片省略了开始和结束字符。从字符串的第1个字符开始,以2为步长逐个截取字符。

第12行代码,切片中的数字1表示从字符串的第2个字符开始取字符,数字2表示以2为步长逐个截取字符。

【运行结果】

 如果要同时截取多个子串,可以使用函数split()实现。函数split()的声明如下所示。

split([char] [,num])

【代码说明】

参数char表示用于分割的字符,默认的分割字符是空格。

参数num表示分割的次数。如果num等于2,将把源字符串分割为3个子串。默认情况下,将根据字符char在字符串中出现的个数来分割子串。

函数的返回值是由子串组成的列表。

代码如下:

 

# 使用split()获取子串

print('-----------# 使用split()获取子串-----')

sentence = "Tom said: a,b,c,d."

print('使用空格获取子串:', sentence.split())

print('使用逗号获取子串:', sentence.split(','))

print('使用逗号获取3个子串:', sentence.split(',', 2))

sentence1 = 'Uzi tell us : he is king and said : A, B, C, D.'

print('使用空格获取子串:', sentence1.split())

print('使用逗号获取子串:', sentence1.split(','))

print('使用空格获取4个子串:', sentence1.split(' ',3))

print('-----------------------------------')

【代码说明】

第22行代码根据空格来获取子串。字符串sentence中有5个空格,将返回由6个子串组成的列表。

第23行代码根据逗号来获取子串。字符串sentence中有3个空格,将返回由4个子串组成的列表。

第24行代码根据逗号来分割字符串,并把字符串sentence分割为3个子串。

【运行结果】

 

字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。



 

# 字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。

print('字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。')

str3 = "a"

print(id(str3))

print(id(str3 + "b"))

print('-------------------------------------')



【代码说明】

第2行代码输出str1的内部标识。输出结果为“4337916312”。

第3行代码,进行字符串连接,新的字符串将获得新的标识。输出结果为“4337800168”。

【运行结果】

 

ALL:

 

运行结果ALL:

 

-------------------end--------------------

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信