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é abc
a def
jsou 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á ValueError
vý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 None
a také vytvoří nové mapování pro neexistující znaky.
V tomto případě ThirdString resetuje mapování 97 ('a') a 98 ('b') na None
a také vytvoří nové mapování pro 100 ('d') mapovaných na None
.