一文了解 Python 中 find() 和 index() 之间的区别

在本文中,我们将了解 Python 中 find() 和 index() 两种方法之间的差异。这两种字符串方法的功能非常相似,可以检测字符串中是否包含子字符串,但是也有少许差异。

find()方法

find() 方法检测字符串中是否包含子字符串,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

语法:

str.find(str, beg=0, end=len(string))

参数:

str -- 指定检索的字符串

beg -- 开始索引,默认为0。

end -- 结束索引,默认为字符串的长度。

返回值:

如果包含子字符串返回开始的索引值,否则返回-1。

示例:

str1 = 'I Love Python'
print(str1.find('Love'))
print(str1.find('I', 1, 8))
print(str1.find('Python', 2))

输出:

2
-1
7

index()方法

index() 方法检测字符串中是否包含子字符串,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果不在,返回一个异常。

语法:

str.index(substring, beg=0, end=len(string))

参数:

substring -- 指定检索的字符串。

beg -- 开始索引,默认为 0。

end -- 结束索引,默认为字符串的长度。

返回值:

如果包含子字符串返回开始的索引值,否则抛出异常。

示例:

str1 = 'I Love Python'
print(str1.index('Love'))
print(str1.index('I', 1, 8))

输出:

2
Traceback (most recent call last):
  File "C:\1.py", line 3, in <module>
    print(str1.index('I', 1, 8))
ValueError: substring not found

如果字符串中找不到子字符串,index() 则会引发 ValueError。

find() 和 index() 的区别

如果在字符串中找不到子字符串,则 find() 返回 -1,而 index() 会抛出 ValueError 异常。 因此,find() 可以在条件语句(if、if-else、if-elif)中使用,根据字符串中子字符串的存在与否来进行判断。index() 方法不能用在条件语句中使用。

find() 只能与字符串一起使用,index() 可以与列表、元组和字符串一起使用。

str1 = 'I Love Python'
if str1.find('Love'):
    print("[Love] 在字符串中!")
else:
    print("[Love] 不在字符串中!")

输出:

[Love] 在字符串中

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!