本篇我们学习如何利用字符串的 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。