Ce face string.Formatter
Formatter implementează aceleași reguli ca str.format(), dar le expune ca metode pe care le poți suprascrie într-o subclasă: get_value() (de unde vin valorile), format_field() (cum se formatează), convert_field() (conversiile !r, !s).
Metoda parse() descompune un șablon în bucăți (text, nume_camp, format, conversie), utilă pentru a afla ce câmpuri cere un șablon.
Ce returnează
format() returnează textul formatat; parse() un iterator de tupluri.
Exemple
Exemplul 1: Câmpurile unui șablon și valori implicite
import string
sablon = "{nume} are {varsta:d} ani și locuiește în {oras}"
print([camp for _, camp, _, _ in string.Formatter().parse(sablon) if camp])
class CuImplicit(string.Formatter):
def get_value(self, key, args, kwargs):
return kwargs.get(key, f"<{key}?>")
print(CuImplicit().format("{nume} din {oras}", nume="Ana"))
Rezultat
['nume', 'varsta', 'oras']
Ana din <oras?>
Greșeli frecvente
- Folosești
Formatterpentru formatări obișnuite. Pentru asta ajungstr.format()și f-string-urile; clasa este utilă doar când vrei reguli proprii.
Comenzi înrudite
str.format() și str.format_map(): Completează un șablon de text cu valori puse între acolade.string.Template: Șabloane simple de text cu marcaje $nume, sigure pentru texte scrise de utilizatori.format(): Formatează o singură valoare după un șablon: zecimale, aliniere, separatori, baze.