Strings sind in Python un­ver­än­der­lich. Dennoch können Sie Zeichen entfernen, indem Sie mit ent­spre­chen­den Methoden eine neue Zei­chen­ket­te erstellen, die nur die ge­wünsch­ten Teile des Originals enthält.

Un­ver­än­der­lich­keit von Strings erklärt

Un­ver­än­der­lich­keit bedeutet, dass ein Objekt, sobald es erstellt wurde, nicht mehr geändert werden kann. Bei Strings in Python ist jede Zei­chen­ket­te un­ver­än­der­lich (immutable). Wenn Sie Zeichen aus einem String mit Python-Methoden entfernen, erstellen Sie in Wahrheit eine neue Zei­chen­ket­te, die nur bestimmte Elemente des Originals besitzt. Der ur­sprüng­li­che String bleibt unberührt. Die String Im­mu­ta­bi­li­ty trägt zu einem ef­fi­zi­en­ten Spei­cher­hand­ling in Python bei und hilft, un­er­war­te­te Effekte bei der Arbeit mit Zei­chen­ket­ten 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 ent­fer­nen­den Zeichen oder Muster re­prä­sen­tiert.

str.replace()

Die str.replace()-Funktion hat den Zweck, Teile eines Texts zu entfernen oder mit einem Teil­string aus­zu­tau­schen.

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 Aus­ru­fe­zei­chen „!“.

re.sub()

Die Funktion re.sub() gehört zum re-Modul in Python. Sie können mit ihr reguläre Ausdrücke in Zei­chen­ket­ten 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 Son­der­zei­chen @, #, $, %, ^, &,* passt. Die re.sub()-Funktion sucht nach allen Über­ein­stim­mun­gen des Musters im ur­sprüng­li­chen String original_string und ersetzt sie durch eine leere Zei­chen­ket­te ''. Das Ergebnis speichern wir in der Variablen modified_string und geben es aus.

Alle Zeichen außer Buch­sta­ben entfernen

Um alle Buch­sta­ben 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ß­buch­sta­be ist. Als Ergebnis enthält modified_string nur die Buch­sta­ben aus dem ur­sprüng­li­chen String. Leer­zei­chen 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 Com­pre­hen­si­on, um durch jeden Buch­sta­ben in original_string zu iterieren. Die isalpha()-Methode überprüft, ob ein Zeichen ein Buchstabe ist. Nur die Buch­sta­ben werden in eine neue Zei­chen­ket­te 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 zu­rück­gibt, wenn das Zeichen ein Buchstabe ist, an­dern­falls False. Die filter()-Funktion erstellt ein Filter-Objekt, das nur die­je­ni­gen Zeichen enthält, für die die Bedingung str.isalpha() wahr ist. So können wir alle Zeichen, die keine Buch­sta­ben sind, in original_string her­aus­neh­men.

Alle Zeichen außer Zahlen entfernen

Zahlen können Sie ähnlich wie in den vor­he­ri­gen Bei­spie­len 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 de­fi­nie­ren wir einen Bereich, der alle Ziffern von 0 bis 9 ein­schließt. Der Bin­de­strich - zwischen 0 und 9 dient als Be­reichs­ope­ra­tor. Das vor­an­ge­stell­te ^ bezieht sich auf alle Zeichen, die nicht im an­ge­ge­be­nen 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 Kom­bi­na­ti­on mit isdecimal() kann Zahlen aus einem String filtern und die rest­li­chen Zeichen entfernen. Der neue String zeigt uns dem­zu­fol­ge 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 Com­pre­hen­si­on verwenden, um durch jeden char in original_string zu iterieren. Wenn das Zeichen keine De­zi­mal­zif­fer ist (not char.isdecimal() ist wahr), wird es durch ein Sternchen * ersetzt, sonst bleibt es un­ver­än­dert.

Zeichen mit translate() entfernen

Die translate()-Methode ist eine ein­ge­bau­te Funktion in Python, die für fort­ge­schrit­te­ne Zei­chener­set­zung und -über­set­zung in Zei­chen­ket­ten verwendet wird. Sie bietet eine ef­fi­zi­en­te Mög­lich­keit, Zeichen basierend auf einer Tabelle von Über­set­zun­gen 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()-Kon­struk­tor und dict.fromkeys(), um die Über­set­zungs­ta­bel­le zu erstellen. Diese gibt an, dass alle Vokale durch * aus­ge­tauscht werden sollen. Die Tabelle wird dann auf den ur­sprüng­li­chen String an­ge­wen­det, um modified_string zu erhalten.

Tipp

Beim Filtern von Strings ist es auch möglich, den Python String Index zu be­rück­sich­ti­gen, um Zeichen an be­stimm­ten Stellen her­aus­zu­fil­tern. Wenn Sie die Zei­chen­ket­ten in einem be­stimm­ten Format ausgeben möchten, sollten Sie einen Blick in unseren Ratgeber zum Thema Python String Format werfen.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive
Zum Hauptmenü