Wie man mehrere Zeichen in einer Zeichenkette in Python ersetzt

Rayven Esplanada 10 Oktober 2023
  1. Verwenden Sie str.replace(), um mehrere Zeichen in Python zu ersetzen
  2. Verwendung von re.sub() oder re.subn() zum Ersetzen mehrerer Zeichen in Python
  3. translate() und maketrans() zum Ersetzen mehrerer Zeichen in Python
Wie man mehrere Zeichen in einer Zeichenkette in Python ersetzt

Dieses Tutorial zeigt Ihnen, wie Sie mehrere Zeichen in einer Zeichenkette in Python ersetzen können.

Nehmen wir an, wir wollen Sonderzeichen in einer Zeichenkette entfernen und durch Leerzeichen ersetzen.

  • Die Liste der zu entfernenden Sonderzeichen wäre !#$%^&*().
  • Außerdem wollen wir die Kommas , durch Leerzeichen ersetzen.
  • Der Beispieltext, den wir manipulieren werden:
A!!!,Quick,brown#$,fox,ju%m%^ped,ov&er&),th(e*,lazy,d#!og$$$

Verwenden Sie str.replace(), um mehrere Zeichen in Python zu ersetzen

Wir können die replace() Methode des str Datentyps verwenden, um Teilzeichenketten in eine andere Ausgabe zu ersetzen.

replace() akzeptiert zwei Parameter, der erste Parameter ist das Regex-Muster, mit dem Sie Zeichenketten abgleichen wollen, und der zweite Parameter ist die Ersatzzeichenkette für die abgeglichenen Zeichenketten.

Es ist auch ein dritter optionaler Parameter in replace(), der eine ganze Zahl akzeptiert, um die maximale count der auszuführenden Ersetzungen festzulegen. Wenn Sie 2 als count-Parameter angeben, wird die Funktion replace() nur 2 Instanzen innerhalb der Zeichenkette abgleichen und ersetzen.

str.replace('Hello', 'Hi') wird alle Instanzen von Hello in einer Zeichenkette durch Hi ersetzen. Wenn Sie eine Zeichenkette Hello World haben und die replace-Funktion daraufhin ausführen, würde sie nach der Ausführung zu Hi World werden.

Lassen Sie uns replace auf den Beispieltext anwenden, den wir oben erklärt haben. Zuerst entfernen wir die Sonderzeichen, indem wir jedes Zeichen in eine Schleife legen und durch eine leere Zeichenkette ersetzen, dann wandeln wir Kommas in Leerzeichen um.

txt = "A!!!,Quick,brown#$,fox,ju%m%^ped,ov&er&),th(e*,lazy,d#!og$$$"


def processString(txt):
    specialChars = "!#$%^&*()"
    for specialChar in specialChars:
        txt = txt.replace(specialChar, "")
    print(txt)  # A,Quick,brown,fox,jumped,over,the,lazy,dog
    txt = txt.replace(",", " ")
    print(txt)  # A Quick brown fox jumped over the lazy dog

Das bedeutet, dass alles innerhalb der eckigen Klammer von spChars mit txt.replace(spChars, '') durch eine leere Zeichenkette ersetzt wird.

Das Zeichenketten-Ergebnis der ersten replace() Funktion wäre dann:

A, Quick, brown, fox, jumped, over, the, lazy, dog

Der nächste Aufruf von replace() ersetzt alle Instanzen von Komma , in einzelne Leerzeichen:

A Quick brown fox jumped over the lazy dog

Verwendung von re.sub() oder re.subn() zum Ersetzen mehrerer Zeichen in Python

In Python können Sie das re-Modul importieren, das eine Menge von Ausdrucksabgleichsoperationen für Regex zur Verfügung stellt, die Sie nutzen können.

Zwei solcher Funktionen innerhalb von re sind sub() und subn().

Lassen Sie uns ein weiteres String-Beispiel für diese Methoden deklarieren. Nehmen wir an, wir wollen alle Zahlen innerhalb einer Zeichenkette durch X ersetzen:

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."

re.sub() zum Ersetzen mehrerer Zeichen in Python

Die Funktion hat 3 Hauptargumente. Das erste Argument akzeptiert ein RegEx-Muster, das zweite Argument ist eine Zeichenkette, die die übereinstimmenden Muster ersetzt, und das dritte ist die Zeichenkette, mit der gearbeitet werden soll.

Erstellen Sie eine Funktion, die alle Zahlen innerhalb einer Zeichenkette in X konvertiert.

import re

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."


def processString3(txt):
    txt = re.sub("[0-9]", "X", txt)
    print(txt)


processString3(txt)

Ausgabe:

Hi, my phone number is XXXXXXXXXXXX. I am XX years old. I live in XXXB Baker Street. I have X,XXX,XXX in my bank account.

re.subn() zum Ersetzen mehrerer Zeichen in Python

Diese Funktion ist im Wesentlichen die gleiche wie re.sub(), gibt aber stattdessen ein Tupel der konvertierten Zeichenkette und die Anzahl der vorgenommenen Ersetzungen zurück.

import re

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."


def processString4(txt):
    txt, n = re.subn("[0-9]", "X", txt)
    print(txt)


processString4(txt)

Ausgabe:

Hi, my phone number is XXXXXXXXXXXX. I am XX years old. I live in XXXB Baker Street. I have X,XXX,XXX in my bank account.'
txt, n = re.subn("[0-9]", "X", txt)

Im obigen Code-Snippet wird die verarbeitete Zeichenkette txt und der Ersetzungszähler n zugewiesen.

re.subn() ist nützlich, wenn Sie sich notieren wollen, wie viele Mustergruppen Sie als Metrik oder zur weiteren Verarbeitung manipuliert haben.

translate() und maketrans() zum Ersetzen mehrerer Zeichen in Python

translate() und maketrans() benutzen einen anderen Ansatz als regex, sie benutzen Wörterbücher, um alte auf neue Werte abzubilden.

maketrans() akzeptiert 3 Parameter oder ein einziges AbbildungsDictionary:

  • str1 - Zeichenkette der zu ersetzenden Zeichen
  • str2 - Zeichenkette von Ersetzungen für obige Zeichen
  • str3 - Zeichenkette der zu löschenden Zeichen

maketrans() eine Abbildungstabelle zwischen der ursprünglichen Zeichenkette und ihrer Ersetzung.

translate() akzeptiert alles, was maketrans() zurückgibt und erzeugt dann die übersetzte Zeichenkette.

Nehmen wir an, wir wollen alle kleingeschriebenen Vokale innerhalb einer Zeichenkette in Großbuchstaben umwandeln und alle in der Zeichenkette gefundenen x, y und z löschen.

txt = "Hi, my name is Mary. I like zebras and xylophones."


def processString5(txt):
    transTable = txt.maketrans("aeiou", "AEIOU", "xyz")
    txt = txt.translate(transTable)
    print(txt)


processString5(txt)

Ausgabe:

HI, m nAmE Is MAr. I lIkE EbrAs And lOphOnEs.

translate() konvertiert alle kleingeschriebenen Vokale in Großbuchstaben und entfernt alle Instanzen von x, y und z.

Ein anderer Ansatz zur Verwendung dieser Methoden ist die Verwendung eines einzigen AbbildungsDictionaries anstelle von 3 Argumenten.

def processString6(txt):
    dictionary = {
        "a": "A",
        "e": "E",
        "i": "I",
        "o": "O",
        "u": "U",
        "x": None,
        "y": None,
        "z": None,
    }
    transTable = txt.maketrans(dictionary)
    txt = txt.translate(transTable)
    print(txt)

Dies erzeugt immer noch die gleiche Ausgabe wie processString5, ist aber mit Dictionaries implementiert. Sie können das verwenden, was für Sie bequemer ist.

Zusammenfassend lässt sich sagen, dass es mehrere Möglichkeiten gibt, wie Sie mehrere Zeichen in einer Zeichenkette ersetzen können, indem Sie eingebaute Funktionen oder Funktionen aus importierten Bibliotheken in Python verwenden.

Die gebräuchlichste Methode ist die Verwendung von replace(). Auch re.sub() und subn() sind ziemlich einfach zu benutzen und zu erlernen. translate() verwendet einen anderen Ansatz, da es sich bei der Manipulation von Zeichenketten nicht auf reguläre Ausdrücke stützt, sondern auf Wörterbücher und Karten.

Wenn Sie möchten, können Sie sogar manuell eine Schleife über die Zeichenkette legen, indem Sie for-Schleifen verwenden und Ihre eigenen Bedingungen zum Ersetzen hinzufügen und einfach substring() oder split() verwenden, aber das wäre sehr ineffizient und überflüssig. Python bietet vorhandene Funktionen an, die diese Arbeit für Sie erledigen, was viel einfacher ist, als die schmutzige Arbeit selbst zu machen.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Verwandter Artikel - Python String