str.find() 查找子串位置
最后更新:2026-09-22
str.find() 查找子串位置
str.find(sub[, start[, end]]) 返回 sub 首次出现的索引;找不到返回 -1(不抛异常)。
| 分类 | 字符串方法 |
|---|---|
| 类型 | 内建类型方法 |
| Python 版本 | all |
📝 语法
str.find(sub[, start[, end]])
⚙️ 参数
| sub 必选 | 要查找的子串。 |
|---|---|
| start 可选 | 搜索区间的起始位置(含),None 表示从开头。(默认值:None) |
| end 可选 | 搜索区间的结束位置(不含),None 表示到末尾。(默认值:None) |
返回值:int。sub 首次出现的索引;找不到时返回 -1,不抛异常。
是否修改原对象:否(返回新对象)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
2
-1
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Qfind() 找不到子串会抛异常吗?
A不会,这是它与 index() 最大的区别:find() 找不到返回 -1。不确定子串是否存在时优先用 find()。
Qfind() 和 index() 该怎么选?
A只想判断"有没有、在哪个位置"时用 find()(返回 -1 不报错);确定一定存在、找不到就是 bug 时用 index()(抛 ValueError)。
Q怎么找第二次出现的位置?
A用 start 参数跳过第一次:'banana'.find('a', 2) 从索引 2 开始找,返回 3。要找最后一次出现用 rfind()。
Q空子串 find('') 返回什么?
A返回 0(或 start 参数的值),空子串在任意位置都能匹配。