【Python】字符串截取 -- 含逆序截取

前言

在写runoob100例习题教程过程中,遇到这么个问题,详见54题:
https://blog.csdn.net/weixin_41613094/article/details/122268882

"""
题目54:取一个整数a从右端开始的4〜7位。
""" 
分析: 
首先这个整数得满足>=7位,然后取右端开始的4-7, 考核截取字符串; 

num = input("输入整数: ")
num = list(num)[-7:-3]

因此顺便写了下关于字符串截取的知识,尤其是逆序截取,好多同学不理解,这里做个说明。

字符串截取

这里涉及1个基础知识点:
不同于R语言下标从1开始,python的下标开始是0,表示第1位,结尾是-1,表示最后1位;

str = '0123456789'
print(str[:])        # 切片,copy字符串
print(str[0:3])      # 截取第1位到第3位的
print(str[6:])       # 截取第7个字符到结尾
print(str[:-3])      # 截取从0开始到倒数第3个字符
print(str[2])        # 截取第3个字符
print(str[-1])       # 截取倒数第1个字符
print(str[::-1])     # 创造1个与原字符串顺序相反的字符串
print(str[-3:-1])    # 截取倒数第3位开始到倒数第1位的字符
print(str[-3:])      # 截取倒数第3位到结尾
print(str[:-5:-2])   # 逆序截取==> 先截取,再进行逆序.

日常截取的主要情况如上,基本没有什么问题,咨询最多的是最后一个:逆序截取
不理解这个,往往容易出错,先看官方文档地址:Extended Slices;

逆向截取
所谓逆序截取,即倒叙截取字符串,但顺序上先逆序,再截取,这个必须记住,先看参数。
格式: 
str[begin:end:step]
str = '字符串' 
begin = '起始位置' # 即首位0下标
end = '结束位置'   # 即末位-1下标
step = '间隔'     # 默认为1,即跳几位截取
step>0,表示从左往右
step<0,表示从右往左 
案例枚举

记住这里的每个下标。

str = '1234567890'
正序下标: 0   1  2  3  4  5  6  7  8  9 
逆序下标:-10 -9 -8 -7 -6 -5 -4 -3 -2 -1
# 正序
str[1:6]    即从0-5位,step默认1 即结果 12345
str[1:6:2]  即从0-5位,step为2 即结果12345中从1开始跳2步截取,135str[:6:2]   即从0-5位,step为2 即结果01234中从1开始跳2步截取,024str[-9:6:2] 即从-96位,下标-9167,即结果12345678中跳2,即1357# 逆序 --> 第一条重点
str[::-1]   即从0位到末尾,逆向取;这个能理解即理解逆序了;
str[:-6:-1] 即从0-6(5),step是-1,即逆向,则从下标-1开始往前取5位,即98765
str[-3::-3] 即从-3位到末位(3),step是-3,即逆向从-3开始跳着取3位,即741

逆向截取其实不难理解,主要搞清楚的就2点:

  1. 截取顺序,取决于step的正负值;
  2. 截取长度,取决于begin -->end之间的长度,正向长度-1,负向正常;
题外话

希望本文有大家有帮助, 如有错误,欢迎指正。
转载请注明原文链接:
https://blog.csdn.net/weixin_41613094/article/details/122325983

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值