天天看点

【Python】字符串切片

切片操作在Python中应用十分广泛并不局限于字符串操作,在列表等数据结构上同样适用十分重要。

Python字符串

与许多常见的程序设计语言不同,Python中字符串可以用

单引号

引起来,也可以用

双引号

引起来。

s = "Hello Python"
t = 'Hello world'
           

Python字符串的下标也是从0开始的。但可以从末尾往前引用,此时下标从-1开始。例如下列代码:

t = 'Hello world'
print(t[-1])
           

输出:

d
           

字符串切片

切片格式

s[start:end]

,注意实际上切片范围是左闭右开的

[start,end)

,如果没有start或end会默认补充此方向上的

起点

终点

代码:

s = "Hello Python,hello world"
# 注意左闭右开
print(s[6:12])
# 补充0为start
print(s[:12])
# 补充24 + 1为end(由于左闭右开要+1)
print(s[6:])
# 补充开始和结尾 相当于输出整串
print(s[:])
           

测试输出:

Python
Hello Python
Python,hello world
Hello Python,hello world
           

带有方向和步长的字符串切片

此时切片格式

s[start:end:step]

。step表示在[start:end)范围内每step个字符截取一个字符。

例如:

s = "abcdefghij"
print(s[::2])
           

输出:

acegi
           

当step为负值时,表示反向切片,如果没有start或end会默认补充此方向上的起点和终点。

s = "abcdefghij"
# 反向切片
print(s[9:0:-1])
# 反向步长绝对值不为1
print(s[9:0:-3])
           

输出:

jihgfedcb
jgd
           

在带有方向的切片时start和end必须合法否则什么也切不出来:

例如下方代码得不到任何输出

s = "abcdefghij"
# 反向切片
print(s[9:0:1])
# 反向带步长
print(s[0:9:-1])
           

输出:

(空)
           

留下一个reverse(反向输出字符串)代码做思考:

print(s[::-1])