python截取字符串(字符串切片)
python中使用[]
来截取字符串,语法:
字符串[起始位置:结束位置]
一、起始位置:结束位置
先看几个例子:
s = 'python'
print(s) #输出 python 直接输出字符串
#从前面截取
print(s[1]) #输出 y 根据下标取字符
print(s[:]) #输出 python 从头取到尾
print(s[1:]) #输出 ython 从下标1开始,取到结尾
print(s[0:2]) #输出 py 从下标0开始,取到下标2,顾头不顾尾,所有不包含下标2
print(s[0:100]) #输出 python 结束位置即使超出字符串实际长度,也不影响正常切片操作
#从后面截取
print(s[-1]) #输出 n 根据下标取字符
print(s[-1:-3]) #无输出,切片要遵循从左向右切的规则
print(s[-3:-1]) #输出 ho 从下标-3开始,取到下标-1,顾头不顾尾,所有不包含下标-1
这里有几项需要注意:
1、根据下标取字符时,下标不能超出索引。
2、顾头不顾尾:截取字符串时,包含头部但不包含结尾。
举例:字符串截取是按下标来截取的,我们都知道,下标是从0开始的,但上面这个例子print(s[0:2])
套入上面的语法,就是从下标0开始,截取到下标为2的字符,因为不含结尾字符,故这里输出的是py,而不是pyt。
3、使用切片时,结束位置即使超出字符串实际长度也不影响切片的结果。如print(s[0:100])
输出结果python。
4、从左向右:必须遵循从左向右切的规则。
举例:print(s[-1:-3])
从下标-1开始,取到下标-3,从上图可看出,从-1至-3是从右向左的顺序,故什么都取不出来。print(s[-3:-1])
从左到右截取,输出ho。
二、步长
表示截取字符串每步的长度,默认为1,不能为0,语法格式:
字符串[起始位置:结束位置:步长]
先看个图
下面开始操作:
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#从前面截
print(s[0:10:1]) #输出ABCDEFGHIJ,从左向右,取出下标0-10的值,因为顾头不顾尾,最终取出ABCDEFGHIJ
print(s[0:10:2]) #输出ACEGI,因为这里的步长是2,每两位取1个字符,最终取出ACEGI
print(s[0:10:3]) #输出ADGJ,同理,步长是3,每三位取1个字符,最终取出ADGJ
#从后面截
print(s[-20:-10:1]) #输出GHIJKLMNOP,步长默认是1,故这里步长可写可不写
print(s[-10:-20:-1]) #输出QPONMLKJIH,- 表示反方向,即从右向左切,根据倒序下标,-10至-20为QPONMLKJIHG,此时右边是开头,左边是结尾,参考顾头不顾尾,最终取出QPONMLKJIH
print(s[-10:-20:-2]) #输出QOMKI,同理,反方向步长为2,每两位取1个字符,最终取出QOMKI
print(s[-10:-20:-3]) #输出QNKH