Python String maketrans ()

Die Methode string maketrans () gibt eine Zuordnungstabelle für die Übersetzung zurück, die für die Methode translate () verwendet werden kann.

In einfachen Worten ist maketrans()method eine statische Methode, die eine Eins-zu-Eins-Zuordnung eines Zeichens zu seiner Übersetzung / Ersetzung erstellt.

Es wird eine Unicode-Darstellung jedes Zeichens für die Übersetzung erstellt.

Diese Übersetzungszuordnung wird dann verwendet, um ein Zeichen durch sein zugeordnetes Zeichen zu ersetzen, wenn es in der translate () -Methode verwendet wird.

Die Syntax der maketrans()Methode lautet:

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

Hier sind y und z optionale Argumente.

String maketrans () Parameter

maketrans() Methode nimmt 3 Parameter:

  • x - Wenn nur ein Argument angegeben wird, muss es sich um ein Wörterbuch handeln.
    Das Wörterbuch sollte eine 1: 1-Zuordnung von einer einzelnen Zeichenfolge zu seiner Übersetzung oder eine Unicode-Nummer (97 für 'a') zu seiner Übersetzung enthalten.
  • y - Wenn zwei Argumente übergeben werden, müssen es zwei Zeichenfolgen mit gleicher Länge sein.
    Jedes Zeichen in der ersten Zeichenfolge ersetzt den entsprechenden Index in der zweiten Zeichenfolge.
  • z - Wenn drei Argumente übergeben werden, wird jedes Zeichen im dritten Argument None zugeordnet.

Rückgabewert von String maketrans ()

Die maketrans()Methode gibt eine Übersetzungstabelle mit einer 1: 1-Zuordnung einer Unicode-Ordnungszahl zu ihrer Übersetzung / Ersetzung zurück.

Beispiel 1: Übersetzungstabelle mit einem Wörterbuch mit 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))

Ausgabe

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

Hier wird ein Wörterbuch-Diktat definiert. Es enthält eine Zuordnung der Zeichen a, b und c zu 123, 456 bzw. 789.

maketrans() Erstellt eine Zuordnung der Unicode-Ordnungszahl des Zeichens zu seiner entsprechenden Übersetzung.

97 ('a') wird also auf '123', 98 'b' auf 456 und 99 'c' auf 789 abgebildet. Dies kann anhand der Ausgabe beider Wörterbücher demonstriert werden.

Wenn zwei oder mehr Zeichen im Wörterbuch zugeordnet sind, wird eine Ausnahme ausgelöst.

Beispiel 2: Übersetzungstabelle mit zwei Zeichenfolgen mit 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))

Ausgabe

 (97: 100, 98: 101, 99: 102) ValueError: Die ersten beiden Maketrans-Argumente müssen gleich lang sein 

Hier werden zunächst zwei gleich lange abcund defdefinierte Strings definiert. Und die entsprechende Übersetzung wird erstellt.

Wenn Sie nur die erste Übersetzung drucken, erhalten Sie eine 1: 1-Zuordnung zur Unicode-Ordnungszahl jedes Zeichens in firstString zu demselben indizierten Zeichen in secondString.

In diesem Fall wird 97 ('a') auf 100 ('d'), 98 ('b') auf 101 ('e') und 99 ('c') auf 102 ('f') abgebildet.

Der Versuch, eine Übersetzungstabelle für Zeichenfolgen ungleicher Länge zu erstellen, löst eine ValueErrorAusnahme aus, die angibt, dass die Zeichenfolgen gleich lang sein müssen.

Beispiel 3: Übersetzungstabelle mit entfernbarer Zeichenfolge mit maketrans ()

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

Ausgabe

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

Hier wird zunächst die Zuordnung zwischen den beiden Zeichenfolgen firstString und secondString erstellt.

Dann setzt das dritte Argument ThirdString die Zuordnung jedes Zeichens zurück Noneund erstellt auch eine neue Zuordnung für nicht vorhandene Zeichen.

In diesem Fall setzt ThirdString die Zuordnung von 97 ('a') und 98 ('b') auf zurück Noneund erstellt auch eine neue Zuordnung für 100 ('d'), der zugeordnet ist None.

Interessante Beiträge...