正規表現に大きく依存するクラスを作成しています。
私のクラスが次のようになっているとしましょう:
class Example:
def __init__(self, regex):
self.regex = regex
def __repr__(self):
return 'Example({})'.format(repr(self.regex.pattern))
そして、私はそれを次のように使用するとしましょう:
import re
example = Example(re.compile(r'\d+'))
もしそうならrepr(example)
、私は得ます'Example('\\\\d+')'
が、私は欲しいです'Example(r'\\d+')'
。印刷時に正しく表示される余分なバックスラッシュを考慮してください。return"r'{}'".format(regex.pattern)
に実装できると思いますが、それは私にはうまくいきません。万が一、Python Software Foundation が生の文字列リテラルを指定する方法をいつか変更したとしても、私のコードにはそれが反映されません。ただし、それは仮説です。私の主な関心事は、これが常に機能するかどうかです。ただし、頭のてっぺんからエッジケースを考えることはできません。これを行うより正式な方法はありますか?
編集: Format Specification Mini-Language、printf
-style String Formatting guide、またはstring
moduleには何も表示されないようです。