私がやりたいことは、特定のテキストで特定の置換を行うことです。たとえば、'<' は '[' に、'>' は ']' などに変更する必要があります。これは、次のソリューションに似ています: Python で正規表現を使用して複数の置換を行うにはどうすればよいですか? 、つまり
import re
def multiple_replace(dict, text):
# Create a regular expression from the dictionary keys
regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
# For each match, look-up corresponding value in dictionary
return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
さて、問題は、正規表現に一致するパターンも置き換えたいということです。たとえば、「fo.+」を「foo」に、「ba[rz]*」を「bar」に置き換えたいとします。
コード内の map(re.escape を削除すると、正規表現が実際に一致するようになりますが、重要なエラーが表示されます。は辞書のキーではなく、リテラル文字列 'ba[rz]*' です。この関数を変更して機能させるにはどうすればよいですか?
(関係のない話ですが、これらの「foo」と「bar」はどこから来たのですか?)