Python Formatarea șirurilor
Python 3.6 ne-a adus f-string-ul, care este acum modul preferat de a formata textul.
În versiunile anterioare, acest rol îl avea metoda format().
F-Strings
Un f-string îți permite să controlezi cum sunt formatate anumite părți dintr-un șir.
Tot ce trebuie este un f scris imediat înaintea literalului de tip șir:
Exemplu
Un prim f-string, foarte simplu:
Ieșire: program Python complet
txt = f"Prețul este 49 de dolari"
print(txt)
Substituenți și modificatori
Valorile ajung într-un f-string prin substituenți, scriși ca {}. Un substituent poate conține variabile, operații și funcții.
Poate avea și un modificator, care decide cum arată valoarea.
Scrie modificatorul după două puncte :, folosind un tip de formatare valid. De exemplu, .2f cere un număr în virgulă fixă cu 2 zecimale:
Exemplu
Pune variabila price într-un substituent:
Ieșire: program Python complet
price = 59
txt = f"Prețul este {price} de dolari"
print(txt)
Exemplu
Afișează același preț cu 2 zecimale:
Ieșire: program Python complet
price = 59
txt = f"Prețul este {price:.2f} dolari"
print(txt)
Substituenți și modificatori
Valoarea nu trebuie să se afle neapărat într-o variabilă. O poți formata direct în substituent:
Exemplu
Formatează numărul 95 cu 2 zecimale:
Ieșire: program Python complet
txt = f"Prețul este {95:.2f} dolari"
print(txt)
Efectuarea operațiilor în f-strings
Substituenții pot rula și operații Python. Aici intră calculele simple, calculele cu variabile și chiar instrucțiunile if...else, cum arată următoarele trei exemple:
Exemplu
Înmulțește două numere în substituent și afișează răspunsul:
Ieșire: program Python complet
txt = f"Prețul este {20 * 59} de dolari"
print(txt)
Exemplu
Calculează prețul cu taxe incluse, direct în substituent:
Ieșire: program Python complet
price = 59
tax = 0.25
txt = f"Prețul este {price + (price * tax)} dolari"
print(txt)
Exemplu
Afișează „Expensive” când prețul depășește 50 și „Cheap” în orice alt caz:
Ieșire: program Python complet
price = 49
txt = f"Este foarte {'scump' if price>50 else 'ieftin'}"
print(txt)
Executarea funcțiilor în f-strings
Un substituent poate apela și funcții. Merg metodele încorporate din Python și, la fel, funcțiile pe care le scrii tu:
Exemplu
Apelează metoda de șir upper() ca să transformi valoarea în litere mari:
Ieșire: program Python complet
fruit = "apples"
txt = f"Îmi plac {fruit.upper()}"
print(txt)
Exemplu
Scrie-ți propria funcție care transformă picioarele în metri, apoi apeleaz-o în substituent:
Ieșire: program Python complet
def myconverter(x):
return x * 0.3048
txt = f"Avionul zboară la o altitudine de {myconverter(30000)} metri"
print(txt)
Mai mulți modificatori
Mai devreme în această lecție, modificatorul .2f a transformat un număr într-o valoare în virgulă fixă cu 2 zecimale.
Aceasta este doar o opțiune, iar alți modificatori formatează valorile în alte moduri.
Exemplu
Adaugă o virgulă ca separator de mii:
Ieșire: program Python complet
price = 59000
txt = f"Prețul este {price:,} de dolari"
print(txt)
Metoda format() pentru șiruri
Înainte de Python 3.6, formatarea unui șir însemna apelarea metodei format().
Metoda încă funcționează, deși f-strings rulează mai repede și sunt alegerea recomandată.
Restul exemplelor din această pagină folosesc format(), ca să vezi cum funcționează.
Și ea marchează substituenții cu acolade {}, dar sintaxa ei diferă puțin:
Ca să controlezi cum este convertită o valoare, adaugă parametri între acolade:
Exemplu
Pune un substituent în locul unde trebuie să apară prețul:
Ieșire: program Python complet
price = 49
txt = "Prețul este {} de dolari"
print(txt.format(price))
txt = "The price is {:.2f} dollars"
Valori multiple
Ai nevoie de mai multe valori? Transmite-le pe toate către format():
Apoi dă-i fiecăreia propriul substituent:
Exemplu
Ieșire: program Python complet
quantity = 3
itemno = 567
price = 49
myorder = "Vreau {} bucăți din articolul numărul {} pentru {:.2f} dolari."
print(myorder.format(quantity, itemno, price))
Numere de index
Un număr între acolade, de exemplu {0}, este un index. El garantează că fiecare valoare ajunge în substituentul potrivit:
Îți permite și să folosești o valoare de mai multe ori, pur și simplu repetându-i indexul:
Exemplu
Ieșire: program Python complet
quantity = 3
itemno = 567
price = 49
myorder = "Vreau {0} bucăți din articolul numărul {1} pentru {2:.2f} dolari."
print(myorder.format(quantity, itemno, price))
Exemplu
Ieșire: program Python complet
age = 36
name = "John"
txt = "Numele lui este {1}. {1} are {0} de ani."
print(txt.format(age, name))
Indecși denumiți
Substituenții pot avea și nume. Scrie un nume între acolade, ca în {carname}, apoi transmite valoarea sub același nume când apelezi metoda, ca în txt.format(carname = "Ford"):
Exemplu
Ieșire: program Python complet
myorder = "Am un {carname}, este un {model}."
print(myorder.format(carname = "Ford", model = "Mustang"))