質問: ### 前提・実現したいこと Pythonで特定箇所の文字を抽出したいと思っています。 その箇所の文字列は任意の長さなので、インデックスが使えません。 どのような方法があるのか、アドバイスいただけたらと思います。 よろしくお願いします。 --------------------------------やりたいこと--------------------------------------- ■検索箇所の登録 下記のように検索したい箇所を、{数字}で記載したいです。 検索内容のフォーマット Our greatest {1} is not in never failing, but in rising up every {2} we fail. ※{1}の部分、{2}の部分に入る任意の文字列を抽出したい ■検索対象の文字列(例) Our greatest glory is not in never failing, but in rising up every time we fail. ■検索結果 以下のようのようなリストを得たい [glory, time]
回答: 正規表現を使えば良いです。 ``` import re form = 'Our greatest {1} is not in never failing, but in rising up every {2} we fail.' src = 'Our greatest glory is not in never failing, but in rising up every time we fail.' re_form = re.sub( r'{\d+}', r'(\w+)', form ) print(f're_form is "{re_form}"') m = re.fullmatch(re_form, src) print(list(m.groups())) ``` **実行結果** Wandbox ``` re_form is "Our greatest (\w+) is not in never failing, but in rising up every (\w+) we fail." ['glory', 'time'] ```