クッキーもぐもぐ

PC関係とか映画とかゲームとかの

python3で特定の文字位置を全部 取得する方法

課題

python3で特定の文字位置を全部取得する方法をメモ。

例えば

'abcabcabcabc'

'a'

の位置は

[0,3,6,9]

のように取得したい。

よくあるfindやindex、正規表現re.serchだと最初か最後の位置しか取得できない。
上の例だと0,9だけ。
調べたら意外と検索に引っかから無かった。

結論

enumerate関数を使うのが一番カンタンそう。

for i,x in enumerate(探す対象の文字列):
    if x == '検索したい文字'
    結果のリスト.append(i)

もしくはもっと簡略化して

結果のリスト = [i for i, x in enumerate(探す対象の文字列) if x == '検索したい文字']

上の例だと

s = 'abcabcabcabc'
s_index = [i for i, x in enumerate(s) if x == 'a']
print(s_index)# [0, 3, 6, 9]

補足

ただし文字は1文字まで。'ab'のような連続の単語の位置は検索できない。 正規表現finditerを使うとできるっぽい? *1