1. ホーム
  2. python

[解決済み] 文字列中の部分文字列のn番目の出現箇所を探す

2022-04-27 23:25:50

質問

これはかなり些細なことのように思えますが、私はPythonの初心者で、最もPythonicな方法でそれを行いたいと思っています。

文字列の中で部分文字列がn番目に出現するインデックスを見つけたいのですが。

私がやりたいことに相当するものがあるはずだ。

mystring.find("substring", 2nd)

Pythonでこれを実現するにはどうしたらいいでしょうか?

どのように解決するのですか?

マークさんの繰り返しアプローチが一般的だと思います。

これは、文字列分割を使った代替案で、ファインディング関連の処理によく役立ちます。

def findnth(haystack, needle, n):
    parts= haystack.split(needle, n+1)
    if len(parts)<=n+1:
        return -1
    return len(haystack)-len(parts[-1])-len(needle)

そして、これが手っ取り早い(針にかなわない籾殻を選ばなければならないという意味で、多少汚い)ワンライナーだ。

'foo bar bar bar'.replace('bar', 'XXX', 1).find('bar')