Python find() 语法
find() 是 Python 字符串的一个方法,它用于获取子串第一次出现的下标。如果找不到子串,则返回 -1。
也就是说,如果 find() 的返回值不等于 -1,那就表示字符串包含了指定子串。
语法:
string.find(sub, start=0, end=len(string))说明:
find() 方法接收以下 3 个参数。
sub(必选):表示要查找的子串。start(可选,默认值:0):表示查找的开始下标。end(可选,默认值:字符串长度):表示查找的结束下标。
如果 sub 参数为空字符串,则返回 start 的值。如果 start 未指定,则返回 0。
提示:
- find() 会严格区分大小写。
- find() 是 “从左到右” 查询,它获取的是子串 “第一次” 出现的下标。而 rfind() 是 “从右到左” 查询,它获取的是 “最后一次” 出现的下标。
Python find() 摘要
| 使用频率 | 高 |
|---|---|
| 修改原字符串 | 否 |
| 官方文档 | 查看 |
| 相关方法 | index()、rindex()、rfind() |
Python find() 示例
接下来,我们通过几个简单的例子来讲解 Python find() 方法是如何使用的。
示例 1:find() 不带 start 和 end
s = '红橙黄绿红橙'
print(s.find('红'))
print(s.find('蓝'))运行结果如下。
0
-1分析:
对于 s.find('红') 来说,虽然 s 中包含 2 个 “红”,但是只会返回第一次出现的下标,也就是 0。
对于 s.find('蓝') 来说,s 中并不包含 “蓝”,因此返回 -1。
示例 2:find() 带 start 和 end
s = '红橙黄绿红橙'
print(s.find('红'))
print(s.find('红', 2, 5))运行结果如下。
0
4分析:
虽然 s 中包含 2 个 “红”,但由于 s.find('红', 2, 5) 限定其查找范围为 s[2:5),因此它返回的是第 2 个 “红” 对应的下标。
示例 3:find() 严格区分大小写
s = 'Python is awesome'
print(s.find('Python'))
print(s.find('python'))运行结果如下。
0
-1分析:
find() 会严格区分大小写,由于字符串存在 'Python',因此 s.find('Python') 返回 0(该字符串开始的下标)。然后字符串不存在 'python',因此 s.find('python') 返回 -1。
示例 4:find() 查找空字符串
s = 'hello'
print(s.find(''))
print(s.find('', 3))运行结果如下。
0
3分析:
空字符串可匹配任何位置。对于 find() 方法来说,如果未指定 start,则默认返回 0;若指定 start,则返回 start 的值。
示例 5:find() 的 start 或 end 超出字符串长度
s = 'Python'
print(s.find('n', 0, 100))
print(s.find('Py', 10, 20))运行结果如下。
5
-1分析:
对于 find() 方法来说,如果 end 超出字符串长度,实际范围截断到末尾,因此 s.find('n', 0, 100) 能够成功匹配。如果 start 超出长度,则在该范围必然无法找到指定子串,因此返回 -1。
find() 和 index() 的区别
find() 和 index() 这 2 个方法非常相似,都可以获取某个子字符串在字符串中出现的位置。但两者也有细微的区别:当子串不存在时,find() 不会报错,而是返回 -1。而 index() 会报错,并且影响程序的正常执行。
| 方法 | 返回值 | 子串不存在时 | 适用场景 |
|---|---|---|---|
| find() | 子串下标或 -1 | 返回 -1 | 需要静默处理子串不存在 |
| index() | 子串下标 | 抛出 ValueError | 需要严格处理子串存在 |
示例 6:子串不存在时使用 find()
s = 'Python is awesome'
result = s.find('Java')
print(result)运行结果如下。
-1示例 7:子串不存在时使用 index()
s = 'Python is awesome'
result = s.index('Java')
print(result)运行结果如下。
(报错)ValueError: substring not found分析:
实际上,判断一个字符串是否包含另一个字符串,还有更简单的方式:使用 in 运算符,请看下面例子。
示例 8:子串不存在时使用 in
s = 'Python is awesome'
result = 'Java' in s
print(result)运行结果如下。
False