string.Template
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.- The substitution format is similar to the string substitution in bash (and other shells), which is useful in some cases. For instance, if you want to write your own dotenv.