python字符串截取性质总结

百度看了很多博客,但解释都很不清粗,直到看了一篇博客,讲得很详细,但个人感觉有些混乱,我看了大半天加上自己试验才看懂,所以自己总结一下,大家有兴趣可以看一看这篇博客,链接:python逆序截取


首先需要了解python的截取格式:str[begin,end,step]






其中begin是起始下标(索引),end是结束的下标,step是步长(间隔)。

用相应的下标即可取到相应的值,如str[1]=1,str[-1]=9;这是截取单个字符

截取多个字符的格式为str[0:2:1]='01',str[-2,-4,-1]= '87'  ,这里可能和大家想的不一样,因为忽略掉了上文或下文,具体原因在下文

也可按照默认值进行截取:str[:]是str[0,-1,1]的省略形式,这样便是从第一个字符从左向右截取到最后一位,也就是截取整个字符串,

 str[::-1]是str[-1,0,-1]的省略形式,这样便是从最后一个字符串从右向左截取到第一位,也就是逆序截取了整个字符串

不过注意:上面虽然是省略形式,但结果是不一样的,因为相应位置为空时才会被认作默认值,被认作默认值后才会包含上界或下界,写成完全形

    式后便会忽略掉上界或下界,具体性质看下文。

字符串截取的工作方式是从begin到end按照step一次次截取,因此step不能为0。

所以有两种情况,step>0时,也就是从左往右,自然起始下标不能大于结束下标,这种情况下截取的结果中不包括上界,

不过,当结束下标为空,也就是为默认值时,截取的结果中包括上界。如str[7:]=‘789’

但这并不意味手动写上-1就是和上面一样的情况,手动写上的话依然是不包括上届的。str[7:-1]='78'

      step<0时,也就是从右往左,自然起始下标不能小于借宿下标,这种情况下截取的结果中不包括下界,

其余的同理。

注意,当step>0时,第一个位置的默认值自动变为0,第二个位置的默认值自动变为-1

   当step<0时,第一个位置的默认值自动变为-1,第二个位置的默认值自动变为0


大家可以看看代码和结果

str='0123456789'

print("字符串str为:"+str+"\n")
print("截取单个字符:str[1]="+str[1]+",str[-1]="+str[-1]+"\n")

print("截取多个字符串:\n")
print("str[0:2:1]="+str[0:2:1]+"\tstr[-2,-4,-1]="+str[-2:-4:-1]+"\n")

print("\n\n其他例子")
print("str[:-1:2]的值为:"+str[:-1:2])
print("str[:0:-3]的值为:"+str[:0:-3])

print("str[-2:2:-2]的值为:"+str[-2:2:-2])

print("str[0:5]的值为:"+str[0:5])
print("str[-1:5:-1]的值为:"+str[-1:5:-1])
print("****************************")


print("\n\n按照默认值截取和手写截取的区别")
print("str[0:-1]的值为:"+str[0:-1])
print("str[0:]的值为:"+str[0:])
print("============================\n\n")

print("str[:-1:]的值为:"+str[:-1:])
print("str[::]的值为:"+str[::])
print("str[:0:-1]的值为:"+str[:0:-1])
print("str[::-1]的值为:"+str[::-1])
print("\n\n============================")
print("str[::-1]的值为:"+str[::-1])
print("str[:0:-1]的值为:"+str[:0:-1])
print("============================\n\n")




可能会有错误和疏可能漏,欢迎大家指出,我好及时修改,以免误人子弟。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章