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