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
相关产品推荐
相关产品推荐

