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'
>>>

これでいい。

参考:http://www.python.jp/doc/2.4/lib/node105.html