【Python入门教程】第82篇 常用字符串方法之查找子串

本文详细介绍了Python字符串的index()和find()方法,用于查找子串在字符串中的位置。index()在找不到子串时抛出ValueError,而find()返回-1。通过示例展示了两种方法在不同情况下的应用,帮助理解其用法和区别。
摘要由CSDN通过智能技术生成

本篇我们学习如何利用字符串的 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。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不剪发的Tony老师

为 5 个 C 币而折腰。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值