? ? ? ? 检测字符串中是否包含子字符串,如果指定范围内包含指定索引值,返回的是索引值在字符串中的起始位置,否则返回-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
? ? ? ? 返回字符串最后一次出现的位置,如果没有匹配项则返回-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
? ? ? ? 检测字符串中是否包含子字符串,如果指定范围内包含指定索引值,返回的是索引值在子字符串中的起始位置,否则返回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 |
处理速度 | 会先使用快速匹配算法进行一次匹配,如果匹配成功则直接返回匹配位置,因此查找速度较快。 | 使用朴素的匹配算法,需要逐字符进行匹配,因此查找速度较慢 |
应用场景 | 一般用于知道要查找的子字符串一定会在字符串中出现 | 一般用于不确定子字符串是否存在,因为不会抛出异常 |