Published: 2022-09-20.
The string.Template class allows to do $
-style substitutions:
from string import Template
t = Template('Hello, $channel!')
t.substitute(dict(channel='@pythonetc'))
# 'Hello, @pythonetc!'
t.safe_substitute(dict())
# 'Hello, $channel!'
Initially, it was introduced to simplify translations of strings. However, now PO-files natively support python-format flag. It indicates for translators that the string has str.format
-style substitutions. And on top of that, str.format
is much more powerful and flexible.
Nowadays, the main purpose of Template
is to confuse newbies with one more way to format a string. Jokes aside, there are a few more cases when it can come in handy:
Template.safe_substitute
can be used when the template might have variables that aren’t defined and should be ignored.