获取字符串中的元素有两种方式:
1)索引(下标):获取单个字符元素。
2)切片操作(裁切):获取多个字符元素。
获取单个字符 — 索引号(下标)
字符串是不可变序列,但其中的元素是有序的。我们可以通过索引(下标)来获取某个位置上的字符,索引从0开始的,依次顺序分配。
语法格式:str_name[index]
代码演示:
>>> mystr = 'hello,python'
>>> mystr[0]
'h'
>>> mystr[1]
'e'
还可以通过index()方法获取指定字符的下标。
语法格式:str_name.index(str) 获取指定str的下标。
# 通过index()获得指定字符的下标
>>> mystr.index('e')
1
>>> mystr.index('l')
2
>>> mystr.index('p')
6
获取多个字符 — 切片操作(裁切)
切片操作就是在指定的操作对象中截取其中的一部分,字符串、列表、元组都支持这个操作。
可以使用切片操作获取一定范围的字符串,得到的是一个新的字符串对象。
1)语法格式
序列[开始位置下标:结束位置下标:步长] —-> str_name[start:stop:sep]
参数说明:
str_name:要截取的原字符串。
start:要截取的第一个字符所在的位置下标,不指定时,默认为0,也就是从开头截取。
stop:要截取的最后一个字符所在位置下标(截取时不包含该字符)
对应的位置是:[start, stop) 不包括结束位置下标,是一个左闭右开区间。正负整数都可以。
sep:表示步长,是指选取间隔,正负整数都可以(正:从左往右;负:从右往左),默认为1。当sep省略时,最后一个冒号也可以省略。例如str_name[:]表示截取的是整个字符串。
2)代码演示(这里的步长都是正数)
mystr = 'hello,python!'
print(mystr[:]) # 省略步长时,最后一个冒号也可以省略
str1 = mystr[:5]
str2 = mystr[6:]
print(str1+' and '+str2) # hello and python!
# 获取位置2到位置5(不包括)的字符
print(mystr[2:5]) # llo
# 获取位置1到位置6的字符,步长为2
print(mystr[1:6:2]) # el,
# 省略开始位置下标时,默认从0开始,直到索引6位置,步长默认为1
print(mystr[:6]) # hello,
# 从位置3开始,省略结束位置下标时,默认到字符串结尾处结束截取。
print(mystr[3:]) # lo,python!
# 从位置3开始截取,一直到字符串结束,步长为2
print(mystr[3::2]) # l,yhn
# 每2个字符获取一个字符。 默认从0开始,默认到字符串的最后一个字符,步长为2
print(mystr[::2]) # hlopto!
何为负索引
正索引:从字符串开始的地方开始计算,起始位置为0。范围 [-N, -1]
负索引:从字符串末尾开始计算,起始位置为-1。范围 [0, N-1]
步长为负数
步长为负数时,表示从右开始选取。
mystr = 'hello,python!'
# 步长为负数时,从字符串的最后一个元素开始截取
print(mystr[::-1]) # !nohtyp,olleh
# 步长默认为1
print(mystr[-7:-1:]) # python
print(mystr[-5:-1:-1]) # 不能选取出数据,因为-5开始到-1结束,选取的方向是从左向右,但-1表示的是从右向左选取。
# 步长为负时:开始下标要大于结束下标,因为是从右往左截取的
print(mystr[-1:-5:-1]) # !noh
print(mystr[-2::-1]) # nohtyp,olleh
print(mystr[7:2:-1]) # yp,ol
注意:如果选取方向(下标开始到结束的方向)和步长方向冲突,则无法截取数据。
© 版权声明
本站网络名称:
尤尤博客
本站永久网址:
https://www.yxfseo.cn
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,请在24H内删除。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容