Metoda string maketrans () zwraca tablicę odwzorowań do tłumaczenia, którą można wykorzystać w metodzie translate ().
Mówiąc najprościej, maketrans()
metoda jest metodą statyczną, która tworzy mapowanie jeden do jednego znaku na jego tłumaczenie / zamianę.
Tworzy reprezentację Unicode każdego znaku do tłumaczenia.
To odwzorowanie tłumaczenia jest następnie używane do zastępowania znaku na jego odwzorowany znak, gdy jest używane w metodzie translate ().
Składnia maketrans()
metody to:
string.maketrans (x (, y (, z)))
Tutaj y i z są argumentami opcjonalnymi.
Parametry ciągu maketrans ()
maketrans()
metoda przyjmuje 3 parametry:
- x - Jeśli podano tylko jeden argument, musi to być słownik.
Słownik powinien zawierać odwzorowanie 1 do 1 pojedynczego ciągu znaków na jego tłumaczenie LUB numer Unicode (97 dla „a”) na jego tłumaczenie. - y - Jeśli przekazano dwa argumenty, muszą to być dwa ciągi o równej długości.
Każdy znak w pierwszym ciągu zastępuje odpowiadający mu indeks w drugim ciągu. - z - Jeśli przekazano trzy argumenty, każdy znak w trzecim argumencie jest mapowany na Brak.
Wartość zwracana z maketrans String ()
maketrans()
Metoda zwraca tablicę translacji z mapowaniem 1-do-1 z porządkowej Unicode do jej przekładu / wymiany.
Przykład 1: Tabela tłumaczeń przy użyciu słownika z 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))
Wynik
(97: '123', 98: '456', 99: '789') (97: '123', 98: '456', 99: '789')
Tutaj zdefiniowany jest słownik słownikowy. Zawiera odwzorowanie znaków a, bi c odpowiednio na 123, 456 i 789.
maketrans()
tworzy mapowanie liczby porządkowej Unicode znaku na odpowiadające jej tłumaczenie.
Tak więc 97 („a”) jest odwzorowane na „123”, 98 „b” na 456, a 99 „c” na 789. Można to wykazać na podstawie wyników obu słowników.
Ponadto, jeśli dwa lub więcej znaków jest odwzorowanych w słowniku, zgłasza wyjątek.
Przykład 2: Tabela tłumaczeń przy użyciu dwóch ciągów z 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))
Wynik
(97: 100, 98: 101, 99: 102) ValueError: pierwsze dwa argumenty maketrans muszą mieć równą długość
Najpierw zdefiniowano dwa ciągi o równej długości abc
i def
. I tworzone jest odpowiednie tłumaczenie.
Wydrukowanie tylko pierwszego tłumaczenia daje mapowanie 1 do 1 na numer porządkowy Unicode każdego znaku w firstString na ten sam indeksowany znak w secondString.
W tym przypadku 97 („a”) jest zamapowane na 100 („d”), 98 („b”) na 101 („e”) i 99 („c”) na 102 („f”).
Próba utworzenia tabeli tłumaczeń dla ciągów o różnej długości powoduje powstanie ValueError
wyjątku wskazującego, że łańcuchy muszą mieć równą długość.
Przykład 3: Tabela translacyjna ze zdejmowalnym ciągiem z maketrans ()
# first string firstString = "abc" secondString = "def" thirdString = "abd" string = "abc" print(string.maketrans(firstString, secondString, thirdString))
Wynik
(97: Brak, 98: Brak, 99: 102, 100: Brak)
Tutaj najpierw tworzone jest mapowanie między dwoma ciągami firstString i secondString.
Następnie trzeci argument thirdString resetuje mapowanie każdego zawartego w nim znaku, None
a także tworzy nowe mapowanie dla nieistniejących znaków.
W tym przypadku thirdString resetuje mapowanie 97 ('a') i 98 ('b') na None
, a także tworzy nowe mapowanie dla 100 ('d') mapowanych na None
.