Pythonで文字列内のn番目の部分文字列を見つける方法は?
最大n+1分割で部分文字列を分割することにより、文字列内でn番目に出現する部分文字列を見つけることができます。結果のリストのサイズがn+1より大きい場合は、サブストリングがn回以上出現することを意味します。そのインデックスは、元の文字列の長さ-最後に分割された部分の長さ-部分文字列の長さという簡単な式で見つけることができます。
例
def findnth(string, substring, n): parts = string.split(substring, n + 1) if len(parts) <= n + 1: return -1 return len(string) - len(parts[-1]) - len(substring) findnth('foobarfobar akfjfoobar afskjdf foobar', 'foobar', 2)
出力
これにより、次の出力が得られます:
31
この中のnは0から始まります。これを変更するのは非常に簡単です。
-
Pythonで不変の文字列のIDを変更するにはどうすればよいですか?
Pythonの文字列は不変です。つまり、文字列が作成されると、変更することはできません。文字列を作成するとき、同じ文字列を作成して別の変数に割り当てると、両方が同じ文字列/メモリを指します。たとえば、 >>> a = 'hi' >>> b = 'hi' >>> id(a) 43706848L >>> id(b) 43706848L この文字列オブジェクトの再利用は、Pythonではインターンと呼ばれます。同じ文字列は同じIDを持ちます。ただし、Pythonは文字列をインターンすることが保証
-
Pythonで部分文字列が別の文字列に含まれているかどうかを確認する方法
Pythonには、文字列が別の文字列のサブ文字列であるかどうかを検索するためのキーワード「in」があります。例 print('ello' in 'hello world') 出力 True サブストリングの最初のインデックスも必要な場合は、find(substr)を使用してインデックスを検索できます。このメソッドが-1を返す場合は、文字列に部分文字列が存在しないことを意味します。たとえば、 print("hello world".find('ello')) 出力 1 文字列「ハリーポッター:炎の