pythonのTemplateで「$」をそのまま使いたい
templateを使うとき、「$」が付いた文字列は常に置換されてしまう。
>>> from string import Template >>> s = Template('$who likes $what') >>> s.substitute(who='tim') Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> s.substitute(who='tim') File "C:\Python26\lib\string.py", line 170, in substitute return self.pattern.sub(convert, self.template) File "C:\Python26\lib\string.py", line 160, in convert val = mapping[named] KeyError: 'what' >>>
置換したくなくても、KeyErrorで怒られるのでどうにかしなければならない。この場合、「what」は「$what」のままでいいんだよ、と教えてあげるためには「$」を「$$」とエスケープする。
>>> s = Template('$who likes $$what') >>> s.substitute(who='tim') 'tim likes $what' >>>
これでいい。