Python获取字符串中的元素的两种方式(切片操作、索引)

获取字符串中的元素有两种方式:

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]

图片[1]-Python获取字符串中的元素的两种方式(切片操作、索引)-尤尤'blog
正索引和负索引

步长为负数

步长为负数时,表示从右开始选取。

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

注意:如果选取方向(下标开始到结束的方向)和步长方向冲突,则无法截取数据。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容