Python 字符串 index() 方法

Python index() 语法

index() 是 Python 字符串的一个方法,它用于获取子串 “第一次” 出现的下标。如果找不到子串,则会直接报错。

语法:

str.index(sub, start=0, end=len(str))

说明:

index() 方法接收以下 3 个参数。

  • sub(必选):你要查找的子串
  • start(可选,默认值:0):表示查找的开始下标(包含)。
  • end(可选,默认值:字符串长度):表示查找的结束下标(不包含)。

str.index(sub, start, end) 表示在 str[start:end] 中查找 sub 这个子串。

如果查找的子串(sub 参数)是空字符串,则 index() 会返回 start 的值(前提是 start 不超过字符串长度)。

如果指定的 sub 子串不在指定的搜索范围内,index() 方法会引发 ValueError 异常。因此在调用 index() 之前,建议小伙伴们先使用 in 运算符或 find() 方法判断元素是否存在,从而避免引发异常。

提示:

  • index() 会严格区分大小写。
  • index() 方法是获取子串 “第一次” 出现的下标,而 rindex() 方法是获取子串 “最后一次” 出现的下标。

Python index() 摘要

使用频率
修改原字符串
官方文档 查看
相关方法 rindex()find()rfind()

Python index() 示例

接下来,我们通过几个简单的例子来讲解 Python index() 方法是如何使用的。

示例 1:包含子串时使用 index()

s = '红橙黄绿红橙'
print(s.index('红'))

运行结果如下。

0

分析:

对于 s.index('红') 来说,虽然 s 中包含 2 个 “红”,但只会返回第一次出现的下标,也就是 0。

示例 2:不包含子串时使用 index()

s = '红橙黄绿红橙'
print(s.index('蓝'))

运行结果如下。

(报错) ValueError: substring not found

分析:

对于 s.index('蓝') 来说,s 中并不包含 “蓝”,因此会报错。

示例 3:index() 严格区分大小写

s = 'Python is awesome'
print(s.index('Python'))
print(s.index('python'))

运行结果如下。

0
(报错) ValueError: substring not found

示例 4:index() 查找空字符串

s = 'hello'
print(s.index(''))
print(s.index('', 3))

运行结果如下。

0
3

分析:

空字符串可匹配任何位置。对于 index() 方法来说,如果 start 未指定,则默认返回 0;如果 start 指定,则返回 start 的值。

示例 5:start 或 end 超出字符串长度

s = 'Python'
print(s.index('n', 0, 100))
print(s.index('', 10, 20))

运行结果如下。

0
(报错)ValueError: substring not found

分析:

对于 index() 方法来说,如果 end 超出字符串长度,实际范围截断到末尾,因此 s.index('n', 0, 100) 能匹配 'n'。但如果 start 超出长度,则必然在该范围内无法找到指定子串,因此会抛出 ValueError 异常。

index() 和 find() 的区别

index() 和 find() 这 2 个方法非常相似,都可以获取某个子字符串在字符串中出现的位置。但是两者也有细微的区别:当子串不存在时,index() 会报错,并且影响程序的正常执行。但 find() 不会报错,而是返回 -1。

index() vs find()
方法 返回值 子串不存在时 适用场景
index() 子串下标 抛出 ValueError 需要严格处理子串存在
find() 子串下标或 -1 返回 -1 需要静默处理子串不存在

示例 6:子串不存在时使用 index()

s = 'Python is awesome'
result = s.index('Java')
print(result)

运行结果如下。

(报错) ValueError: substring not found

示例 7:子串不存在时使用 find()

s = 'Python is awesome'
result = s.find('Java')
print(result)

运行结果如下。

-1

分析:

实际上,判断一个字符串是否包含另一个字符串,还有更简单的方式:使用 in 运算符,请看下面例子。

示例 8:子串不存在时使用 in

s = 'Python is awesome'
result = 'Java' in s
print(result)

运行结果如下。

False

上一篇: endswith()

下一篇: rindex()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号