все Python 3stringпонятие
string.Template
шаблоны
Шаблон строки с подстановкой через $var или ${var}. Безопаснее % и format() для пользовательского ввода. Методы: substitute(), safe_substitute().
Синтаксис
string.Template(template)
t.substitute(mapping={}, /, **kwds)
t.safe_substitute(mapping={}, /, **kwds)
«Безопаснее» здесь буквально про это: в шаблоне нет ни обращения к атрибутам, ни индексации, поэтому чужой шаблон не доберётся до внутренностей объекта так, как это позволяет {0.__class__.__mro__} в str.format(). С долларом аккуратнее: литеральный $ нужно удваивать ($$), иначе substitute() упадёт с ValueError на чём-нибудь вроде '$5'. А safe_substitute() не проверяет ничего: опечатку $nmae он молча оставит в тексте вместо KeyError — удобно для черновиков, опасно, когда важно заметить ошибку.
Примеры
import string
t = string.Template('Hello, $name!')
print(t.substitute(name='Alice')) # → Hello, Alice!
t2 = string.Template('${item} costs $price USD')
print(t2.substitute(item='apple', price=1.5)) # → apple costs 1.5 USD
print(t2.safe_substitute(item='apple')) # → apple costs $price USD
t3 = string.Template('Dear $who, thank you.')
print(t3.substitute({'who': 'Bob'})) # → Dear Bob, thank you.
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности