Ce face string.Template
Template folosește marcaje $nume sau ${nume} (când numele este lipit de alt text). $$ înseamnă semnul dolar. Șablonul nu poate executa expresii sau accesa atribute, deci este potrivit pentru texte configurate de utilizatori (mesaje de email, notificări).
substitute() aruncă KeyError dacă lipsește o valoare. safe_substitute() lasă marcajele lipsă neschimbate. get_identifiers() returnează numele folosite în șablon, iar is_valid() verifică dacă șablonul nu are marcaje greșite.
Parametri
| Parametru | Descriere |
|---|---|
template |
Textul șablonului. |
mapping, **kws |
Pentru substitute/safe_substitute: valorile, ca dicționar sau argumente cu nume. |
Ce returnează
Textul completat (substitute), lista numelor (get_identifiers) sau True/False (is_valid).
Exemple
Exemplul 1: Completarea unui mesaj
from string import Template
t = Template("Bună, $nume! Comanda ${id}A costă $$${total}.")
print(t.substitute(nume="Ana", id=42, total="99.90"))
print(t.get_identifiers(), t.is_valid())
Rezultat
Bună, Ana! Comanda 42A costă $99.90.
['nume', 'id', 'total'] True
Exemplul 2: Valori lipsă
from string import Template
t = Template("Livrare în $oras, la $adresa")
print(t.safe_substitute(oras="Iași"))
try:
t.substitute(oras="Iași")
except KeyError as e:
print("Lipsește:", e)
Rezultat
Livrare în Iași, la $adresa
Lipsește: 'adresa'
Greșeli frecvente
- Folosești
str.format()pe șabloane scrise de utilizatori. Un șablon ca{obiect.__class__}poate expune date interne;Templatenu permite asta.
Comenzi înrudite
str.format() și str.format_map(): Completează un șablon de text cu valori puse între acolade.f-string (f"..."): Șiruri de caractere în care pui direct variabile și expresii între acolade.string.Formatter: Clasa din spatele lui str.format(), pe care o poți extinde ca să schimbi regulile de formatare.