上一篇我们学习了Python 字符串的一些基础知识,由于在以后的编程项目中会经常用到对字符串的知识,所以这一篇我们将继续学习字符串的相关知识。
一、字符串的索引和切片
字符串是字符的有序集合,可以通过其位置来获得具体的元素。在Python中,字符串中的字符是通过索引来提取的。
Python中没有单独的字符类型,一个字符也字符串。
Python中字符串有两种索引方法:正序索引和倒序索引。
正序索引是从左往右对字符串中的字符进行索引,第一个字符的索引从0开始。
倒序索引是从右往左对字符串中的字符进行索引,最右边的字符的索引从-1开始。
下图为字符串 "Hello World" 正序索引和倒序索引
我们将以此字符串为例子展开我们对字符串索引及切片的实际操作。
1.1 字符串中单个字符的获取,可通过字符串如 str1[下标]获取
str1 = "Hello World"
print(str1[0]) #正序索引,获取左边第一个字符
print(str1[-1]) #反序索引,获取右边第一个字符
print(str1[2]) #正序索引,获取在边第三个字符(从0开始)
print(str1[-2]) #反序索引,获取右边第二个字符(从-1开始)
print(str1[5]) # 获取空格位
print(type(str1[5]))
运行结果:
H
d
l
r
运行截图:
1.2 字符串中连续多个字符的获取,可通过字符串如 str1[start:end]获取。
得到对应索引范围的元素,该范围包围起始端,不包含结尾端(左闭右开型)默认截取方向从左往右。
注意:反向索引时,也是左闭右开型
var1 = "Hello World"
print(var1[0:4])
print(var1[-4:-1])
print(var1[3:8])
运行结果:
Hell
orl
lo Wo
运行截图:
几种较特殊情况:
var1 = "Hello World"
print(var1[:]) #取整个字符串
print(var1[:4]) #取索引为4左边的字符串
print(var1[4:]) #从索引为4开始到最右边的字符串
print(var1[-4:]) #从索引为-4开始到最右边的字符串
print(var1[:-4]) #从索引为-4左边的字符串
运行结果:
Hello WorldHello WorldorldHello W
运行截图:
1.3 按步长获取间隔的字符串,语法为 str1[start:end:step](切片语法:[起始:结束:步长]) 按照step步长进行隔取;默认步长为1
var1 = "Hello World"
print(var1[::]) #取整个字符串
print(var1[::2]) #从0索引开始,每隔一个取一个值
print(var1[1:7:2]) #从1索引开始,每隔一个取一个值
print(var1[::-1]) #从右边开始取值,步长为1,把整个字符中取返
运行结果:
Hello World
HloWrd
el
dlroW olleH
运行截图:
字符串取值几个注意点:通过取单个字符时,索引值不能超过字符串的索引。如在"Hello World"中索引不能为11,和-12,否则会报错
var1 = "Hello World"
print(var1[11])
运行报错如下:
IndexError: string index out of range如果取多个字符时,索引超出字符串索引则能取得到值
var1 = "Hello World"
print(var1[0:13])
print(var1[-13:])
print(var1[-14::2])
运行结果:
Hello World
Hello World
HloWrd
运行截图:
字符串获取子字符串的内容就到这里,大家可以多练练手,熟悉一下。
二、字符串几个常用的方法
2.1 Python len() 方法计算字符串包含了多少个字符
var1 = "Hello World"
print(len(var1))
运行结果:
11 #表示有11个字符
注意:Python中一个空格算一个字符,几个空格算几个字符
2.2 Python split() 方法
用途:split() 通过指定的分隔符对字符串进行切片,如果第二个参数num有指定值,则分割为num+1个字符串语法:
str.split(str="",num=str.conunt(str))
参数:
str --分隔符,默认为所有的空字符,包括空格,换行,制品符等
num --分割字数。黑认为-1,即分隔所有
str1="Hello Python world"
print(str1.split()) #以空格为分隔符,分隔所有
print(str1.split("o")) #以"o"为分隔符,分隔所有
print(str1.split("o",-1)) #以"o"为分隔符,分隔所有
print(str1.split("o",0)) #以"o"为分隔符,使用o分隔0次
print(str1.split("o",1)) #以"o"为分隔符,使用o分隔1次
print(str1.split("o",2)) #以"o"为分隔符,使用o分隔2次
print(str1.split("o",4)) #以"o"为分隔符,使用o分隔4次
运行结果:
['Hello', 'Python', 'world']
['Hell', ' Pyth', 'n w', 'rld']
['Hell', ' Pyth', 'n w', 'rld']
['Hello Python world']
['Hell', ' Python world']
['Hell', ' Pyth', 'n world']
['Hell', ' Pyth', 'n w', 'rld']
运行截图:
结束语:这篇内容讲了Python字符串的子字符串的获取,是通过索引和切片进行的。
另外还讲了len()方法和split()方法。下一篇内容,我们将还是学习字符串(str)的其他一些方法。
原创不易,喜欢就给个赞,点个关注吧!
更多的内容可以关注公众号:老树Python
推荐阅读:
老树Python:一步一步学Python3(小学生也适用) 第八篇: 字符串(str)类型(上)zhuanlan.zhihu.com老树Python:一步一步学Python3(小学生也适用) 第七篇: 小数/浮点数(float)类型zhuanlan.zhihu.com老树Python:一步一步学Python3(小学生也适用) 第六篇: 变量及整数(int)类型zhuanlan.zhihu.com老树Python:一步一步学Python3(小学生也适用) 第五篇: Python运算符zhuanlan.zhihu.com