一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第22天,点击查看活动详情。
0 环境
- 编辑器:idea
- 系统版本:win10
- python版本:3.9.6
1 find
从左往右查找,若找到第一个子串,返回该子字符串最低的索引(首字母索引),若么有找到,返回-1。若下图:find的解释。对了,这里find方法必填的参数,就是需要被搜索的子字符串。find方法它有返回值,且原字符串不会改变。start和end这个入参,这里的start和end为None,给它个默认值,当你不传值时,下面会具体结合代码讲解。
请仔细看第一个和第二个打印结果,是不是验证了,返回字符串首字母的索引。么有找到搜索值,返回-1。
def str_find_demo():
s = "1232446Nihao你好呀"
print(s.find("h"))
print(s.find("hao"))
print(s.find("10"))
print("s ==>", s)
find方法第二个入参是start参数,它是指定从哪里开始查找(好比朋友请你吃饭,给你个定位,并且告诉你,这里定位不太准,直接从第二栋楼开始找),从下面可以看出,数字4第一个索引是4,第二个索引才是5,start是4和5时,确实变成了我们所想的那样,那么start选择开始的索引,确实是改变的开始查找的位置。
end参数指定到哪里结束(忽略end之后的字符串),end=-1表示就是最后,也就说最后一个元素。并且start和end都是整数。最后在看一眼文档说明:S[start:end]
,切片嘛,是不是就很容易就理解了,还有一点:这里的[start:end]左开右闭。
def str_find_demo():
s = "1232446Nihao你好呀"
print(s.find("6", 5, 10))
2 rfind
rfind(right find)就是从右往左查找,把之前的start和end,换过来,正常我们的想法,是不是就是[end, start],最终返回的是end的索引,也就说最右边的索引,然而下面的结果告诉我们并不是,虽然查找是从右往左,但是它返回值是最高的索引,字母最末尾的索引(从左往右就是首字母索引),这里的最高和我的理解不太一样,可能是首位,末尾的索引。也就是说,虽然字符串是从左往右查找,但是字符串的截取顺序还是从左往右。
def str_find_demo():
s = "1243624611Nihao你好呀"
print(s.rfind("6"))
print(s.rfind("4", 5, -1))
print("s ==>", s)
总结
总结一下,find和rfind,而find和rfind区别,三个入参相同的,搜索值、开始位置、结束位置(连起来就是从哪个索引开始排查某个搜索值,到哪个索引位置结束排查,有返回索引值,无-1),find从左往右查,返回的索引是首字母索引,而rfind从右往左,但是它的索引返回值确是从左往右数的,可能就是文档中说的最高(末尾)索引。