Maketrans String w Pythonie ()

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 abci 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 ValueErrorwyją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, Nonea 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.

Interesujące artykuły...