Python String maketrans ()

Metoda string maketrans () vrací mapovací tabulku pro překlad použitelnou pro metodu translate ().

Zjednodušeně řečeno, maketrans()metoda je statická metoda, která vytváří mapování postavy jedna k jedné k jejímu překladu / nahrazení.

Vytvoří Unicode reprezentaci každého znaku pro překlad.

Toto mapování překladu se poté použije k nahrazení znaku za mapovaný znak, když se použije v metodě translate ().

Syntaxe maketrans()metody je:

 string.maketrans (x (, y (, z)))

Zde jsou y a z volitelné argumenty.

Řetězec maketrans () parametry

maketrans() metoda má 3 parametry:

  • x - Pokud je zadán pouze jeden argument, musí to být slovník.
    Slovník by měl obsahovat mapování 1: 1 z řetězce jednoho znaku na jeho překlad NEBO číslo Unicode (97 pro 'a') na jeho překlad.
  • y - Pokud jsou předány dva argumenty, musí to být dva řetězce se stejnou délkou.
    Každý znak v prvním řetězci nahrazuje odpovídající index ve druhém řetězci.
  • z - Pokud jsou předány tři argumenty, každý znak ve třetím argumentu je mapován na Žádný.

Návratová hodnota z String maketrans ()

maketrans()Metoda vrací převodní tabulku s mapování 1-k-1 části pořadové Unicode jeho překladu / výměnu.

Příklad 1: Překladová tabulka pomocí slovníku s maketrans ()

 # example dictionary dict = ("a": "123", "b": "456", "c": "789") string = "abc" print(string.maketrans(dict)) # example dictionary dict = (97: "123", 98: "456", 99: "789") string = "abc" print(string.maketrans(dict))

Výstup

 (97: '123', 98: '456', 99: '789') (97: '123', 98: '456', 99: '789') 

Zde je definován slovníkový diktát. Obsahuje mapování znaků a, bac na 123, 456 a 789.

maketrans() vytvoří mapování ordinálu Unicode znaku k jeho odpovídajícímu překladu.

Takže 97 ('a') je mapováno na '123', 98 'b' na 456 a 99 'c' na 789. To lze demonstrovat z výstupu obou slovníků.

Pokud jsou ve slovníku mapovány dva nebo více znaků, vyvolá to výjimku.

Příklad 2: Překladová tabulka pomocí dvou řetězců s maketrans ()

 # first string firstString = "abc" secondString = "def" string = "abc" print(string.maketrans(firstString, secondString)) # example dictionary firstString = "abc" secondString = "defghi" string = "abc" print(string.maketrans(firstString, secondString))

Výstup

 (97: 100, 98: 101, 99: 102) ValueError: první dva argumenty maketrans musí mít stejnou délku 

Tu první dvě struny stejně dlouhé abca defjsou definovány. A vytvoří se odpovídající překlad.

Tisk pouze prvního překladu vám poskytne mapování 1: 1 na pořadové číslo Unicode každého znaku v firstString na stejný indexovaný znak v secondString.

V tomto případě je 97 („a“) mapováno na 100 („d“), 98 („b“) na 101 („e“) a 99 („c“) na 102 („f“).

Pokus o vytvoření překladové tabulky pro řetězce nestejné délky vyvolá ValueErrorvýjimku označující, že řetězce musí mít stejnou délku.

Příklad 3: Překladová tabulka s odnímatelným řetězcem s maketrans ()

 # first string firstString = "abc" secondString = "def" thirdString = "abd" string = "abc" print(string.maketrans(firstString, secondString, thirdString))

Výstup

 (97: Žádný, 98: Žádný, 99: 102, 100: Žádný) 

Zde se nejprve vytvoří mapování mezi dvěma řetězci firstString a secondString.

Potom třetí argument thirdString resetuje mapování každého znaku v něm Nonea také vytvoří nové mapování pro neexistující znaky.

V tomto případě ThirdString resetuje mapování 97 ('a') a 98 ('b') na Nonea také vytvoří nové mapování pro 100 ('d') mapovaných na None.

Zajímavé články...