Ce face str.translate() și str.maketrans()
str.maketrans() construiește tabelul: din două texte de aceeași lungime (fiecare caracter din primul devine caracterul de pe aceeași poziție din al doilea), dintr-un dicționar {caracter: înlocuitor} sau, cu al treilea argument, cu lista caracterelor de șters. translate() aplică tabelul într-o singură trecere.
Este mult mai rapid decât multe replace() la rând. Pentru bytes, bytes.maketrans(din, in) creează un tabel de 256 de octeți, iar bytes.translate(tabel, delete=b"...") poate și șterge octeți.
Parametri
| Parametru | Descriere |
|---|---|
x, y, z |
Pentru maketrans: dicționar, sau două texte de aceeași lungime, plus opțional caracterele de șters. |
tabel |
Pentru translate: tabelul creat de maketrans. |
Ce returnează
maketrans: un dicționar de coduri. translate: un text nou.
Exemple
Exemplul 1: Eliminarea diacriticelor
fara_diacritice = str.maketrans("ăâîșțĂÂÎȘȚ", "aaistAAIST")
print("Știința și ațâțarea în Brașov".translate(fara_diacritice))
Rezultat
Stiinta si atatarea in Brasov
Exemplul 2: Ștergere și înlocuire cu dicționar
tabel = str.maketrans({"-": " ", "_": " "}, )
print("cluj-napoca_centru".translate(tabel))
fara_cifre = str.maketrans("", "", "0123456789")
print("A1n2a3".translate(fara_cifre))
print(b"a-b-c".translate(None, delete=b"-"))
print(b"abc".translate(bytes.maketrans(b"abc", b"xyz")))
Rezultat
cluj napoca centru
Ana
b'abc'
b'xyz'
Greșeli frecvente
- Dai două texte de lungimi diferite la
maketransși primeștiValueError: the first two maketrans arguments must have equal length.
Comenzi înrudite
str.replace(): Înlocuiește într-un text toate aparițiile unui subșir cu altul.chr() și ord(): ord() dă codul Unicode al unui caracter; chr() dă caracterul pentru un cod.re.sub() și re.subn(): Înlocuiește toate potrivirile unui model cu un text sau cu rezultatul unei funcții.