Wie man mehrere Zeichen in einer Zeichenkette in Python ersetzt
-
Verwenden Sie
str.replace()
, um mehrere Zeichen in Python zu ersetzen -
Verwendung von
re.sub()
oderre.subn()
zum Ersetzen mehrerer Zeichen in Python -
translate()
undmaketrans()
zum Ersetzen mehrerer Zeichen in Python
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 Zeichenstr2
- Zeichenkette von Ersetzungen für obige Zeichenstr3
- 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.
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.
LinkedInVerwandter Artikel - Python String
- Entfernen Kommas aus String in Python
- Wie man prüft, ob eine Zeichenkette auf pythonische Weise leer ist
- Konvertieren einer Zeichenkette in einen Variablennamen in Python
- Wie man Leerzeichen in einem String in Python entfernt
- Wie man in Python Zahlen aus einer Zeichenkette extrahiert
- Wie man in Python String in datetime konvertiert