1. ホーム
  2. python

[解決済み] Pythonで文字列の中に複数回出現する文字列を見つける

2023-03-15 17:36:03

質問

Pythonで文字列内に複数回出現する文字列を見つけるにはどうしたらよいですか?これを考えてみましょう。

>>> text = "Allowed Hello Hollow"
>>> text.find("ll")
1
>>> 

ということは、最初に出てくる ll は予想通り 1 にあります。次に出現するものを見つけるにはどうしたらよいでしょうか。

同じ質問がリストにも当てはまります。考えてみてください。

>>> x = ['ll', 'ok', 'll']

どのようにすればすべての ll とそのインデックスを見つけるには?

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

正規表現を使うと re.finditer を使って、すべての(重複しない)出現箇所を見つけることができます。

>>> import re
>>> text = 'Allowed Hello Hollow'
>>> for m in re.finditer('ll', text):
         print('ll found', m.start(), m.end())

ll found 1 3
ll found 10 12
ll found 16 18

また、正規表現のオーバーヘッドが嫌な場合は、繰り返し str.find を取得することができます。 のインデックスを取得します。

>>> text = 'Allowed Hello Hollow'
>>> index = 0
>>> while index < len(text):
        index = text.find('ll', index)
        if index == -1:
            break
        print('ll found at', index)
        index += 2 # +2 because len('ll') == 2

ll found at  1
ll found at  10
ll found at  16

これはリストや他の配列に対しても有効です。