Python: Remove Character from String - So entfernen oder ersetzen Sie Zeichen

Strings sind in Python unveränderlich. Dennoch können Sie Zeichen entfernen, indem Sie mit entsprechenden Methoden eine neue Zeichenkette erstellen, die nur die gewünschten Teile des Originals enthält.

Unveränderlichkeit von Strings erklärt

Unveränderlichkeit bedeutet, dass ein Objekt, sobald es erstellt wurde, nicht mehr geändert werden kann. Bei Strings in Python ist jede Zeichenkette unveränderlich (immutable). Wenn Sie Zeichen aus einem String mit Python-Methoden entfernen, erstellen Sie in Wahrheit eine neue Zeichenkette, die nur bestimmte Elemente des Originals besitzt. Der ursprüngliche String bleibt unberührt. Die String Immutability trägt zu einem effizienten Speicherhandling in Python bei und hilft, unerwartete Effekte bei der Arbeit mit Zeichenketten zu vermeiden.

Bestimmte Zeichen aus einem String entfernen

Um bestimmte Zeichen aus einem String zu entfernen, können Sie zum Beispiel str.replace() oder re.sub() mit einem regulären Ausdruck verwenden, der die zu entfernenden Zeichen oder Muster repräsentiert.

str.replace()

Die str.replace()-Funktion hat den Zweck, Teile eines Texts zu entfernen oder mit einem Teilstring auszutauschen.

original_string = "Hello, Python#"

modified_string = original_string.replace('#', '!')

print(original_string)  # Output: Hello, Python#
print(modified_string)  # Output: Hello, Python!
Python

Im oberen Beispiel ersetzt die replace()-Methode alle Zeichen der Form „#“ in original_string durch ein Ausrufezeichen „!“.

re.sub()

Die Funktion re.sub() gehört zum re-Modul in Python. Sie können mit ihr reguläre Ausdrücke in Zeichenketten suchen und ersetzen.

import re

original_string = "Hello, World! @#$%^&*"

modified_string = re.sub(r'[@#$%^&*]', '', original_string)

print(original_string)  # Output: Hello, World! @#$%^&*
print(modified_string)  # Output: Hello, World!
Python

Das Muster [@#$%^&*] ist ein regulärer Ausdruck, der auf die Sonderzeichen @, #, $, %, ^, &,* passt. Die re.sub()-Funktion sucht nach allen Übereinstimmungen des Musters im ursprünglichen String original_string und ersetzt sie durch eine leere Zeichenkette ''. Das Ergebnis speichern wir in der Variablen modified_string und geben es aus.

Alle Zeichen außer Buchstaben entfernen

Um alle Buchstaben aus einem String zu entfernen, stehen Ihnen unter anderem die Methoden isalpha(), filter() und re.sub() zur Verfügung.

re.sub()

import re

original_string = "Hello, 123 World! @#$%^&*"

modified_string = re.sub(r'[^a-zA-Z]', '', original_string)

print(original_string)  # Output: Hello, 123 World! @#$%^&*
print(modified_string)  # Output: HelloWorld
Python

Der reguläre Ausdruck [^a-zA-Z] stimmt mit jedem Zeichen überein, das kein Klein- oder Großbuchstabe ist. Als Ergebnis enthält modified_string nur die Buchstaben aus dem ursprünglichen String. Leerzeichen wurden ebenfalls entfernt.

isalpha()

original_string = "Hello, 123 World! @#$%^&*"

modified_string = ''.join(char for char in original_string if char.isalpha())

print(original_string)  # Output: Hello, 123 World! @#$%^&*
print(modified_string)  # Output: HelloWorld
Python

In diesem Beispiel verwenden wir List Comprehension, um durch jeden Buchstaben in original_string zu iterieren. Die isalpha()-Methode überprüft, ob ein Zeichen ein Buchstabe ist. Nur die Buchstaben werden in eine neue Zeichenkette modified_string eingefügt, und alle anderen Zeichen werden ignoriert.

filter()

original_string = "Hello, 123 World! @#$%^&*"

filtered_chars = filter(str.isalpha, original_string)
modified_string = ''.join(filtered_chars)

print(original_string)  # Output: Hello, 123 World! @#$%^&*
print(modified_string)  # Output: HelloWorld
Python

str.isalpha() ist eine Methode, die True zurückgibt, wenn das Zeichen ein Buchstabe ist, andernfalls False. Die filter()-Funktion erstellt ein Filter-Objekt, das nur diejenigen Zeichen enthält, für die die Bedingung str.isalpha() wahr ist. So können wir alle Zeichen, die keine Buchstaben sind, in original_string herausnehmen.

Alle Zeichen außer Zahlen entfernen

Zahlen können Sie ähnlich wie in den vorherigen Beispielen mit re.sub(), filter() und der zu isalpha() analogen Funktion isdecimal() trennen.

re.sub()

import re

original_string = "Hello, 123 World! @#$%^&*"

modified_string = re.sub('[^0-9]', '', original_string)

print(original_string)   # Output: Hello, 123 World! @#$%^&*
print(modified_string)    # Output: 123
Python

Mit 0-9 definieren wir einen Bereich, der alle Ziffern von 0 bis 9 einschließt. Der Bindestrich - zwischen 0 und 9 dient als Bereichsoperator. Das vorangestellte ^ bezieht sich auf alle Zeichen, die nicht im angegebenen Bereich von 0 bis 9 liegen. Diese werden von re.sub durch leere Zeichen ersetzt.

filter()

original_string = "Hello, 123 World! @#$%^&*"

filtered_chars = filter(str.isdecimal, original_string)
modified_string = ''.join(filtered_chars)

print(original_string)   # Output: Hello, 123 World! @#$%^&*
print(modified_string)    # Output: 123
Python

Die filter()-Funktion in Kombination mit isdecimal() kann Zahlen aus einem String filtern und die restlichen Zeichen entfernen. Der neue String zeigt uns demzufolge nur die Ziffern 123 an.

isdecimal()

original_string = "Hello, 123 World"

modified_string = ''.join('*' if not char.isdecimal() else char for char in original_string)

print(original_string)   # Output: Hello, 123 World
print(modified_string)    # Output: *******123******
Python

Wir können auch die Methode isdecimal() in einer List Comprehension verwenden, um durch jeden char in original_string zu iterieren. Wenn das Zeichen keine Dezimalziffer ist (not char.isdecimal() ist wahr), wird es durch ein Sternchen * ersetzt, sonst bleibt es unverändert.

Zeichen mit translate() entfernen

Die translate()-Methode ist eine eingebaute Funktion in Python, die für fortgeschrittene Zeichenersetzung und -übersetzung in Zeichenketten verwendet wird. Sie bietet eine effiziente Möglichkeit, Zeichen basierend auf einer Tabelle von Übersetzungen zu ersetzen.

original_string = "Hello, World! Remove vowels."
translation_table = str.maketrans(dict.fromkeys('aeiouAEIOU', '*'))
modified_string = original_string.translate(translation_table)

print(original_string)   # Output: Hello, World! Remove vowels.
print(modified_string)    # Output: H*ll*, W*rld! R*m*v* v*w*ls.
Python

Wir benutzen den str.maketrans()-Konstruktor und dict.fromkeys(), um die Übersetzungstabelle zu erstellen. Diese gibt an, dass alle Vokale durch * ausgetauscht werden sollen. Die Tabelle wird dann auf den ursprünglichen String angewendet, um modified_string zu erhalten.

Tipp

Beim Filtern von Strings ist es auch möglich, den Python String Index zu berücksichtigen, um Zeichen an bestimmten Stellen herauszufiltern. Wenn Sie die Zeichenketten in einem bestimmten Format ausgeben möchten, sollten Sie einen Blick in unseren Ratgeber zum Thema Python String Format werfen.

Günstige Webhosting-Pakete von IONOS!

Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting inklusive persönlichem Berater mit IONOS!

Kostenlose Domain
SSL Zertifikat
DDoS-Schutz