查找字符串中第n个出现的子字符串

这看起来应该很简单,但我是Python新手,希望以最具Python风格的方式来完成

我想找到对应于字符串中第n次出现的子字符串的索引

一定有和我想做的一样的事情

mystring.find(“子字符串”,第二个)

如何在Python中实现这一点

下面是简单迭代解决方案的一个更具python风格的版本:

def find\n(干草堆,针,n):
开始=干草堆。查找(针)
启动时>=0和n>1:
开始=干草堆。查找(针,开始+针)
n-=1
回程起动

示例:

&gt&燃气轮机&燃气轮机;查找n(“fooo”,“fooo”,2)
6.

如果要查找第n个重叠出现的,可以按1而不是len(针),如下所示:

def查找重叠(草堆、针、n):
开始=干草堆。查找(针)
启动时>=0和n>1:
开始=干草堆。查找(针,开始+1)
n-=1
回程起动

示例:

&gt&燃气轮机&燃气轮机;查找重叠部分(“foofoo”,“foofoo”,2)
3.

这比Mark的版本更容易阅读,并且不需要拆分版本或导入正则表达式模块的额外内存。它还遵循python禅宗中的一些规则,不同于各种re方法:

  1. 简单总比复杂好
  2. 平的比嵌套的好
  3. 可读性很重要

发表评论