You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:编写查找大字符串中子串第二次出现索引的函数

实现查找子串第二次出现索引的find_second函数

对于Python新手来说,实现这个函数的核心是利用字符串的find()方法分两步定位,同时处理子串不存在、只出现一次的边界情况。

完整实现代码如下:

def find_second(findin, whattofind):
    # 定位子串第一次出现的索引
    first_pos = findin.find(whattofind)
    # 若子串从未出现,直接返回-1
    if first_pos == -1:
        return -1
    # 从第一次匹配的下一个完整子串位置开始,查找第二次出现的索引
    second_pos = findin.find(whattofind, first_pos + len(whattofind))
    return second_pos

# 测试用例验证
print(find_second('dance, dance, dance everyday', 'dance'))  # 输出7
print(find_second('learning about data, surprisingly, requires a lot of data','data'))  # 输出53

关键逻辑说明

  • str.find(sub, start)方法会从start指定的索引开始,返回子串sub第一次出现的位置,找不到则返回-1。
  • 用first_pos + len(whattofind)作为第二次查找的起始位置,能确保跳过第一次的完整匹配,避免重复定位同一个子串,同时兼容子串可能重叠的场景。
  • 当子串只出现一次或从未出现时,函数会返回-1,符合常规查找方法的返回逻辑。

内容的提问来源于stack exchange,提问作者Intan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:16:08