The string.Template class allows to do
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_substitutecan 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.