本篇我们学习如何利用字符串的 index() 方法和 find() 方法获取字符串中子串的位置。

字符串 index() 方法

字符串的 index() 方法用于返回字符串中指定子串第一次出现的位置。index() 方法的语法如下:

str.index(sub[, start[, end]])

index() 方法包含三个参数:

  • sub 是需要查找的子串。
  • start 和 end 参数分别表示查找操作的开始位置和结束位置,它们都是可选参数。

如果在字符串 str 中的 str[start:end] 范围内没有找到子串 sub,index() 方法将会返回 ValueError 错误。

如果只需要判断字符串中是否存在某个子串,可以使用 in 操作符:sub in str。

index() 方法示例

下面我们来看几个使用 index() 方法的示例。

在字符串中查找子串的位置

以下示例使用 index() 方法在字符串“Python will, Python will rock you.’”中查找子串“Python”第一次出现的位置:

s = 'Python will, Python will rock you.'
position = s.index('Python')

print(position)

输出结果如下:

0

字符串 s 中包含两个子串“Python”,index() 方法返回了第一个子串的位置,字符串的下标位置从 0 开始。

在字符串指定范围内查找子串的位置

以下示例使用 index() 方法在字符串“Python will, Python will rock you.”的切片 str[1:] 中查找子串“Python”第一次出现的位置:

s = 'Python will, Python will rock you.'
position = s.index('Python', 1)

print(position)

输出结果如下:

13

以上示例返回子串“Python”在字符串 s 中第二次出现的位置。

在字符串中未找到指定的子串

以下示例返回了 ValueError 错误,因为字符串“Python will, Python will rock you.”中不存在子串“Java”:

s = 'Python will, Python will rock you.'
position = s.index('Java')

print(position)

输出结果如下:

ValueError: substring not found

如果希望没有找到子串的情况下不返回 ValueError 错误,可以使用字符串的 find() 方法查找子串。find() 方法在未找到子串时返回 -1,而不是 ValueError。

字符串 find() 方法

字符串的 index() 方法和 index() 方法类似,也可以用于返回字符串中指定子串第一次出现的位置。index() 方法的语法如下:

str.find(sub[, start[, end]])

find() 方法包含三个参数:

  • sub 是需要查找的子串。
  • start 和 end 参数分别表示查找操作的开始位置和结束位置,它们都是可选参数。start 默认为 0,end 默认为 length-1,length 是字符串 str 的长度。

如果在字符串 str 中的 str[start:end] 范围内没有找到子串 sub,find() 方法将会返回 -1。

find() 方法示例

在字符串中查找子串的位置

以下示例使用 find() 方法在字符串“Johny Johny Yes Papa”中查找子串“Johny”第一次出现的位置:

s = 'Johny Johny Yes Papa'
result = s.find('Python')

print(result)

输出结果如下:

0

字符串 s 中包含两个子串“Johny”,find() 方法返回了第一个子串的位置。

在字符串指定范围内查找子串的位置

以下示例使用 index() 方法在字符串“Johny Johny Yes Papa”的切片 str[1:] 中查找子串“Johny”第一次出现的位置:

s = 'Johny Johny Yes Papa'
result = s.find('Johny', 1)

print(result)

输出结果如下:

6

以上示例返回子串“Johny”在字符串 s 中第二次出现的位置。

在字符串中未找到指定的子串

以下示例返回了 -1,因为字符串“Johny Johny Yes Papa.”中不存在子串“Julia”:

s = 'Johny Johny Yes Papa'
result = s.find('Julia')

print(result)

输出结果如下:

-1

总结

  • 字符串的index() 方法和 find() 方法都可以用于查找字符串中子串第一次出现的位置。
  • 如果没有找到子串,index() 方法返回 ValueError 错误,但是 find() 方法返回 -1。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐