字符串切片 slice 操作
切片 slice 操作可以让我们快速的提取子字符串。标准格式为:[起始偏移量 start:终止偏移量 end:步长 step]
典型操作(三个量为正数的情况)如下:
操作和说明 | 示例 | 结果 |
[:] 提取整个字符串 | “abcdef”[:] | “abcdef” |
[start:]从 start 索引开始到结尾 | “abcdef”[2:] | “cdef” |
[:end]从头开始指导end-1 | “abcdef”[:2] | “ab” |
[start:end]从 start 到 end-1 | “abcdef”[2:4] | “cd” |
[start:end:step]从 start 提取到end-1,步长是 step | “abcdef”[1:5:2] 这里:2可以理解为每2个取1次 | “bd” |
其他操作(三个量为负数)的情况:
示例 | 说明 | 结果 |
"abcdefghijklmnopqrstuvwxyz"[-3:] | 从倒数第三个开始取到最后 | “xyz” |
"abcdefghijklmnopqrstuvwxyz"[-8:-3] | 倒数第八个到倒数第三个(包头不包尾) | 'stuvw' |
"abcdefghijklmnopqrstuvwxyz"[::-1] | 开始和结束未赋值,步长为负,所以是从右到左反向提取 | 'zyxwvutsrqponmlkjihgfedcba' |
切片操作时,起始索引和终止索引不在[0,字符串长度-1]这个范围,也不会报错。起始
偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成-1。例如:
>>> "abcdefg"[3:50]
'defg'
我们发现正常输出了结果,没有报错。
【操作】
- 将”to be or not to be”字符串倒序输出
>>> 'to be or noe to be'[::-1]
'eb ot eon ro eb ot'
- 将”sxtsxtsxtsxtsxt”字符串中所有的 s 输出
>>> 'sxtsxtsxtsxtsxt'[0::3]
'sssss'