Metóda string maketrans () vracia mapovaciu tabuľku pre preklad použiteľnú pre metódu translate ().
Zjednodušene povedané, maketrans()
metóda je statická metóda, ktorá vytvára mapovanie znaku jedna k jednej k jeho prekladu / nahradeniu.
Vytvára Unicode reprezentáciu každého znaku na preklad.
Toto prekladové mapovanie sa potom použije na nahradenie znaku jeho mapovaným znakom, keď sa použije v metóde translate ().
Syntax maketrans()
metódy je:
string.maketrans (x (, y (, z)))
V tomto prípade sú y a z voliteľné argumenty.
Reťazec maketrans () parametre
maketrans()
metóda má 3 parametre:
- x - Ak je zadaný iba jeden argument, musí to byť slovník.
Slovník by mal obsahovať mapovanie 1: 1 z reťazca jedného znaku na jeho preklad ALEBO číslo Unicode (97 pre písmeno „a“) na jeho preklad. - y - Ak sú zadané dva argumenty, musia to byť dva reťazce rovnakej dĺžky.
Každý znak v prvom reťazci je náhradou za zodpovedajúci index v druhom reťazci. - z - Ak sú zadané tri argumenty, každý znak v treťom argumente je namapovaný na Žiadny.
Návratová hodnota z reťazca maketrans ()
maketrans()
Metóda vracia konverznú tabuľku s mapovanie 1-k-1 časti poradové Unicode jeho prekladu / výmenu.
Príklad 1: Prekladová tabuľka pomocou slovníka 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ýkon
(97: „123“, 98: „456“, 99: „789“) (97: „123“, 98: „456“, 99: „789“)
Tu je definovaný slovníkový diktát. Obsahuje mapovanie znakov a, bac na 123, 456 a 789.
maketrans()
vytvorí mapovanie ordinálu Unicode znaku na jeho zodpovedajúci preklad.
Takže 97 ('a') je namapované na '123', 98 'b' na 456 a 99 'c' na 789. To je možné demonštrovať z výstupu oboch slovníkov.
Ak sú v slovníku mapované dva alebo viac znakov, vyvolá to výnimku.
Príklad 2: Prekladová tabuľka pomocou dvoch reťazcov 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ýkon
(97: 100, 98: 101, 99: 102) ValueError: prvé dva argumenty maketrans musia mať rovnakú dĺžku
Tú prvú dve struny rovnako dlhé abc
a def
sú definované. A vytvorí sa zodpovedajúci preklad.
Tlač iba prvého prekladu vám poskytne mapovanie 1: 1 na poradové číslo Unicode každého znaku v firstString na rovnaký indexovaný znak v secondString.
V tomto prípade sa 97 („a“) mapuje na 100 („d“), 98 („b“) na 101 („e“) a 99 („c“) na 102 („f“).
Pokus o vytvorenie prekladovej tabuľky pre reťazce nerovnakej dĺžky vyvolá ValueError
výnimku naznačujúcu, že reťazce musia mať rovnakú dĺžku.
Príklad 3: Prekladová tabuľka s odnímateľným reťazcom s maketrans ()
# first string firstString = "abc" secondString = "def" thirdString = "abd" string = "abc" print(string.maketrans(firstString, secondString, thirdString))
Výkon
(97: Žiadne, 98: Žiadne, 99: 102, 100: Žiadne)
Tu sa najskôr vytvorí mapovanie medzi dvoma reťazcami firstString a secondString.
Potom tretí argument thirdString obnoví mapovanie každého znaku v ňom None
a tiež vytvorí nové mapovanie pre neexistujúce znaky.
V tomto prípade thirdString resetuje mapovanie 97 ('a') a 98 ('b') na None
a tiež vytvorí nové mapovanie pre 100 ('d') mapovaných na None
.