一、str.find方法

        检测字符串中是否包含子字符串,如果指定范围内包含指定索引值,返回的是索引值在字符串中的起始位置,否则返回-1。

语法:str.find(sub, begin, end)

参数说明:

str:被索引的字符串

sub:目标检索的字符或者字符串

begin:可选,遍历的起始位置,默认为0,即字符串首字符

end:可选,遍历的结束位置,默认为最后的位置,但不包括结束位置的字符。注意规定了end必须要有begin

例:

import sys

str = "hello world"

print(str.find('E'))  #输出结果为1
print(str.find('or')) #输出结果为7
print(str.find('l', 3)) #输出结果为3
print(str.find('l5')) #输出结果为-1

二、str.rfind()方法

        返回字符串最后一次出现的位置,如果没有匹配项则返回-1。

语法:str.rfind(sub, begin, end)

参数说明:

str:被索引的字符串

sub:目标检索的字符或者字符串

begin:可选,遍历的起始位置,默认为0,即字符串首字符

end:可选,遍历的结束位置,默认为最后的位置,但不包括结束位置的字符。

import sys

str = "hello world"

print(str.rfind('l'))  #输出结果为9
print(str.rfind('or')) #输出结果为7
print(str.rfind('o', 4, 7)) #输出结果为4
print(str.rfind('l5')) #输出结果为-1

三、str.index()方法

        检测字符串中是否包含子字符串,如果指定范围内包含指定索引值,返回的是索引值在子字符串中的起始位置,否则返回ValueError异常。

语法:str.index(sub, begin, end)

参数说明:

str:被索引的字符串

sub:目标检索的字符或者字符串

begin:可选,遍历的起始位置,默认为0,即字符串首字符

end:可选,遍历的结束位置,默认为最后的位置,但不包括结束位置的字符。

例:

import sys

str = "hello world"

print(str.index('e'))#输出结果为1
print(str.index('or'))#输出结果为7
print(str.index('l', 3)) #输出结果为3
print(str.index('l5')) #抛出异常ValueError: substring not found

补充:str.index()与str.find()的区别:

区别

str.index()

str.find()

返回值

若字符串存在,则返回的是一个整数,表示子字符串在字符串中第一次出现的位置;如果字符串不存在,则抛出ValueError异常

若字符串存在,则返回的是一个整数,表示子字符串在字符串中第一次出现的位置;如果字符串不存在,则返回-1

处理速度

会先使用快速匹配算法进行一次匹配,如果匹配成功则直接返回匹配位置,因此查找速度较快。

使用朴素的匹配算法,需要逐字符进行匹配,因此查找速度较慢

应用场景

一般用于知道要查找的子字符串一定会在字符串中出现

一般用于不确定子字符串是否存在,因为不会抛出异常