Python String maketrans ()

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é abca defsú 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á ValueErrorvý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 Nonea tiež vytvorí nové mapovanie pre neexistujúce znaky.

V tomto prípade thirdString resetuje mapovanie 97 ('a') a 98 ('b') na Nonea tiež vytvorí nové mapovanie pre 100 ('d') mapovaných na None.

Zaujímavé články...