string.Template în Python

Șiruri de caractere Python 3.0+ (get_identifiers, is_valid: 3.11+)

Șabloane simple de text cu marcaje $nume, sigure pentru texte scrise de utilizatori.

Sintaxă
t = string.Template("Salut, $nume!")
t.substitute(nume="Ana")
t.safe_substitute(...)

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; Template nu permite asta.

Comenzi înrudite