str.translate() și str.maketrans() în Python

Metode pentru șiruri Python 3.0+

Înlocuiește sau șterge mai multe caractere deodată, după un tabel de traducere.

Sintaxă
tabel = str.maketrans(x[, y[, z]])
text.translate(tabel)

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ști ValueError: 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.