Python String maketrans ()

Strängen maketrans () -metoden returnerar en kartläggningstabell för översättning som kan användas för translate () -metoden.

Enkelt uttryckt är maketrans()metoden en statisk metod som skapar en en till en kartläggning av ett tecken till dess översättning / ersättning.

Det skapar en Unicode-representation av varje tecken för översättning.

Denna översättningsmappning används sedan för att ersätta ett tecken till dess mappade tecken när det används i translate () -metoden.

Syntaxen för maketrans()metoden är:

 string.maketrans (x (, y (, z)))

Här är y och z valfria argument.

String maketrans () Parametrar

maketrans() metoden tar 3 parametrar:

  • x - Om endast ett argument tillhandahålls måste det vara en ordlista.
    Ordboken ska innehålla en 1-till-1-mappning från en enda teckensträng till dess översättning ELLER ett Unicode-nummer (97 för 'a') till dess översättning.
  • y - Om två argument skickas måste det vara två strängar med samma längd.
    Varje tecken i den första strängen är en ersättning för motsvarande index i den andra strängen.
  • z - Om tre argument skickas, mappas varje tecken i det tredje argumentet till Ingen.

Returvärde från String maketrans ()

Den maketrans()metod returnerar en översättningstabell med en en-till-en mappning av ett Unicode ordinal till dess översättning / utbyte.

Exempel 1: Översättningstabell med en ordbok med 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))

Produktion

 (97: '123', 98: '456', 99: '789') (97: '123', 98: '456', 99: '789') 

Här definieras en ordboksdikt. Den innehåller en kartläggning av tecken a, b och c till 123, 456 respektive 789.

maketrans() skapar en mappning av karaktärens Unicode-ordning till dess motsvarande översättning.

Så, 97 ('a') avbildas till '123', 98 'b' till 456 och 99 'c' till 789. Detta kan visas från utgången från båda ordböckerna.

Om två eller flera tecken är mappade i ordlistan ger det också ett undantag.

Exempel 2: Översättningstabell med två strängar med 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))

Produktion

 (97: 100, 98: 101, 99: 102) ValueError: de första två argumenten för maketrans måste ha samma längd 

Här först definieras två strängar av lika längd abcoch defdefinieras. Och motsvarande översättning skapas.

Om du bara skriver ut den första översättningen får du en 1-till-1-mappning till varje karaktärs Unicode-ordning i firstString till samma indexerade tecken på secondString.

I detta fall mappas 97 ('a') till 100 ('d'), 98 ('b') till 101 ('e') och 99 ('c') till 102 ('f').

Att försöka skapa en översättningstabell för strängar med olika längd ger ett ValueErrorundantag som indikerar att strängarna måste ha samma längd.

Exempel 3: Översättningstabell med avtagbar sträng med maketrans ()

 # first string firstString = "abc" secondString = "def" thirdString = "abd" string = "abc" print(string.maketrans(firstString, secondString, thirdString))

Produktion

 (97: Ingen, 98: Ingen, 99: 102, 100: Ingen) 

Här skapas först kartläggningen mellan de två strängarna firstString och secondString.

Därefter återställer det tredje argumentet thirdString kartläggningen av varje tecken i det till Noneoch skapar också en ny mappning för obefintliga tecken.

I det här fallet återställer thirdString kartläggningen av 97 ('a') och 98 ('b') till None, och skapar också en ny mappning för 100 ('d') mappad till None.

Intressanta artiklar...