Zeichen aus einem String in Python entfernen: Methoden und Beispiele
Um Zeichen aus einem String in Python zu entfernen, muss ein neuer String erzeugt werden, da sich str-Objekte nach ihrer Erstellung nicht verändern lassen. str.replace() eignet sich zum Entfernen einzelner Zeichen oder Teilstrings, während str.translate() beziehungsweise str.maketrans() mehrere Zeichen gleichzeitig löschen können. Für regelbasierte Muster kann re.sub() verwendet werden. Slicing eignet sich dagegen, wenn Zeichen am Anfang, am Ende oder an einer bestimmten Position entfernt werden sollen.
Dieses Tutorial erläutert die einzelnen Verfahren anhand ausführbarer Beispiele, die sich in der interaktiven Python-Konsole testen lassen. Wenn ausschließlich Leerzeichen entfernt werden sollen, siehe Leerzeichen aus einem String in Python entfernen.
Python-Anwendungen können direkt aus GitHub über eine verwaltete Anwendungsplattform bereitgestellt werden, während die Plattform die Skalierung der Anwendung übernimmt.
Die wichtigsten Erkenntnisse
- Python-Strings sind unveränderlich: Beim Entfernen von Zeichen entsteht immer ein neuer String, während der ursprüngliche Wert unverändert bleibt.
- Mit
replace(old, '')lässt sich ein einzelnes Zeichen oder ein Teilstring entfernen. Über ein drittes Argument kann die Anzahl der Ersetzungen begrenzt werden. translate()kann zusammen mitstr.maketrans('', '', chars)oder einem Mapping-Dictionary verwendet werden, um mehrere Zeichen in einem Durchlauf zu entfernen.re.sub()eignet sich, wenn Zeichen anhand eines Musters entfernt werden sollen, beispielsweise Ziffern, Satzzeichen oder Nicht-ASCII-Zeichen.- Mit Slicing wie
s[1:],s[:-1]oders[:i] + s[i+1:]kann das erste, letzte oder ein über seinen Index bestimmtes Zeichen entfernt werden, ohne den gesamten String nach einem bestimmten Zeichen zu durchsuchen. strip(),lstrip()undrstrip()entfernen Zeichen am Anfang oder Ende eines Strings, häufig Leerzeichen. Beliebige Zeichen innerhalb des Strings werden dadurch nicht entfernt.- Listen besitzen die Methode
remove(), Strings dagegen nicht. Wirdremove()auf einem String aufgerufen, entsteht einAttributeError.
Die passende Methode zum Entfernen von Zeichen aus Python-Strings wählen
| Methode | Geeignet für | Einschränkung |
|---|---|---|
replace() |
Ein einzelnes Zeichen oder einen Teilstring sowie einfache feste Zeichenfolgen | Mehrere unterschiedliche Zeichen erfordern verkettete Aufrufe oder eine Schleife |
translate() / maketrans() |
Mehrere unterschiedliche Zeichen gleichzeitig entfernen | Bei komplexeren Regeln kann der Code schwerer lesbar werden |
re.sub() |
Ziffern, Gruppen von Satzzeichen und Regeln auf Basis regulärer Ausdrücke | Bei einem einzelnen festen Ausdruck meist langsamer als replace() |
| Slicing | Das erste, letzte oder ein positionsabhängiges Zeichen entfernen | Nicht dafür vorgesehen, jedes Vorkommen eines Zeichens im gesamten String zu löschen |
strip() / lstrip() / rstrip() |
Unerwünschte Zeichen am Anfang oder Ende entfernen, etwa Leerzeichen oder \n |
Zeichen innerhalb des Strings bleiben unverändert |
Zeichen aus einem Python-String mit replace() entfernen
str.replace() erstellt eine Kopie eines Strings und ersetzt dabei jedes Vorkommen des ersten Arguments durch das zweite Argument. Soll eine Übereinstimmung vollständig gelöscht werden, wird als Ersatz ein leerer String angegeben.
Zunächst wird ein Beispiel-String erstellt:
s = 'abc12321cba'
Alle Vorkommen von a entfernen:
print(s.replace('a', ''))
Ausgabe:
bc12321cb
Beide a-Zeichen wurden entfernt. Der ursprüngliche Wert von s bleibt dennoch 'abc12321cba'.
Zeilenumbrüche aus einem Python-String entfernen
s = 'ab\ncd\nef'
print(s.replace('\n', ''))
Ausgabe:
abcdef
Einen Teilstring entfernen
print('Helloabc'.replace('Hello', ''))
Ausgabe:
abc
Anzahl der Ersetzungen begrenzen
Mit dem optionalen dritten Parameter lässt sich festlegen, wie viele Ersetzungen maximal ausgeführt werden:
print('abababab'.replace('a', 'A', 2))
Ausgabe:
AbAbabab
Nur die ersten beiden a-Zeichen werden ersetzt. Weitere Einzelheiten bietet Python String replace().
Zeichen aus einem Python-String mit translate() entfernen
str.translate() verarbeitet Zeichen mithilfe einer Übersetzungstabelle. Unerwünschte Zeichen können None zugeordnet werden. Alternativ lässt sich mit str.maketrans() eine Tabelle zum Löschen bestimmter Zeichen erzeugen.
Alle Vorkommen von b entfernen:
s = 'abc12321cba'
print(s.translate({ord('b'): None}))
Ausgabe:
ac12321ca
Mehrere Zeichen mit einem einzigen Aufruf löschen:
print(s.translate({ord(i): None for i in 'abc'}))
Ausgabe:
12321
Nach demselben Prinzip lassen sich auch Zeilenumbrüche entfernen:
print('ab\ncd\nef'.translate({ord('\n'): None}))
Ausgabe:
abcdef
str.maketrans('', '', ',!') erstellt eine reine Löschtabelle und kann dadurch übersichtlicher sein als eine Dictionary-Comprehension:
string = "Hello, World!"
print(string.translate(str.maketrans("", "", ",!")))
# Hello World
Zeichen aus Python-Strings mit regulären Ausdrücken entfernen
re.sub() eignet sich besonders dann, wenn die Regel zum Entfernen durch ein Muster und nicht durch ein festes Zeichen oder einen festen Teilstring definiert wird. Vor der Verwendung muss re importiert werden.
Ziffern entfernen:
import re
text = "Hello123 World456"
print(re.sub(r'\d+', '', text))
# Hello World
Alle Zeichen entfernen, die weder Buchstaben noch Ziffern sind:
print(re.sub(r'[^a-zA-Z0-9]', '', "Hello, World! 123"))
# HelloWorld123
Nicht-ASCII-Zeichen entfernen:
raw = 'Café résumé'
print(re.sub(r'[^\x00-\x7F]+', '', raw))
# Caf rsum
Zeichen mit Python-Slicing und Comprehensions entfernen
Slicing entfernt Zeichen anhand ihrer Position, ohne den gesamten String nach bestimmten Zeichen durchsuchen zu müssen.
s = "Hello, World!"
print(s[1:]) # ello, World! — remove first character
print(s[:-1]) # Hello, World — remove last character
i = 4
print(s[:i] + s[i+1:]) # Hell, World! — remove character at index i
Eine List Comprehension oder ein Generator-Ausdruck innerhalb von join() kann einzelne Zeichen filtern:
vowels = 'aeiouAEIOU'
print(''.join(c for c in 'hello world' if c not in vowels))
# hll wrld
Performance beim Entfernen von Zeichen aus großen Python-Strings
Bei einem lokalen Test mit einem String aus einer Million Zeichen unter Python 3.12 ergaben sich ungefähr folgende Ergebnisse:
| Aufgabe | Schnellster Ansatz |
|---|---|
| Ein häufig vorkommendes einzelnes Zeichen entfernen | replace() |
| Mehrere unterschiedliche Zeichen entfernen | translate() oder ein einzelnes re.sub('[abc]', '') |
| Musterbasierte Bereinigung | re.sub() |
Mehrere hintereinander ausgeführte replace()-Operationen verursachen bei sehr großen Strings mehr Aufwand als ein einzelner Aufruf von translate() oder ein einziger regulärer Ausdruck. Bei üblichen Strings in Anwendungen sind alle genannten Varianten in der Regel schnell genug. Profiling wird vor allem dann relevant, wenn pro Anfrage mehrere Megabyte Text verarbeitet werden.
Unerwünschte Zeichen aus Pandas-Spalten entfernen
Bei der Datenverarbeitung können Python-Stringoperationen auf einzelne Spalten angewendet werden.
Mit .str.replace() und einer Capture Group lassen sich nur Ziffern beibehalten:
import pandas as pd
df = pd.DataFrame({'strings': ['123abc', '456def', '789ghi']})
df['strings'] = df['strings'].str.extract(r'(\d+)')[0]
print(df)
Mit .apply() lässt sich ein benutzerdefinierter Filter erstellen:
def remove_vowels(text):
vowels = 'aeiouAEIOU'
return ''.join(c for c in text if c not in vowels)
df = pd.DataFrame({'strings': ['hello world', 'python is fun']})
df['strings'] = df['strings'].apply(remove_vowels)
Häufig gestellte Fragen
1. Wie lässt sich ein Zeichen aus einem String in Python entfernen?
Verwende replace() und übergib einen leeren String als Ersatz:
text = "Hello, World!"
print(text.replace(",", ""))
# Hello World!
Sollen mehrere unterschiedliche Zeichen entfernt werden, sind translate() oder re.sub() meist besser geeignet, als zahlreiche replace()-Aufrufe miteinander zu verketten.
2. Gibt es in Python eine remove()-Methode für Strings?
Nein. Mit list.remove() wird ein Element aus einer Liste gelöscht, Strings besitzen jedoch keine remove()-Methode. Der Aufruf "abc".remove("a") verursacht einen AttributeError. Für Strings können stattdessen replace(), translate(), re.sub() oder Slicing verwendet werden.
3. Wie lässt sich ein Zeichen anhand seines Index aus einem Python-String löschen?
Mit Slicing kann die unerwünschte Position ausgelassen werden:
s = "EXAMPLE"
i = 2 # remove 'A' at index 2
print(s[:i] + s[i+1:])
# EXMPLE
Soll jedes Vorkommen eines Zeichens unabhängig von seiner Position gelöscht werden, ist replace() oder translate() besser geeignet als indexbasiertes Slicing.
4. Was ist strip() in Python und wann sollte es verwendet werden?
strip() entfernt Zeichen vom Anfang und Ende eines Strings. Standardmäßig handelt es sich dabei um Leerzeichen. lstrip() und rstrip() führen dieselbe Art von Bereinigung jeweils nur auf einer Seite durch. Zeichen innerhalb eines Strings werden von diesen Methoden nicht entfernt. strip() kann beispielsweise nach dem Einlesen von Zeilen aus einer Datei eingesetzt werden. Wenn Zeilenumbrüche an beliebigen Positionen innerhalb des Textes vorkommen können, eignen sich replace('\n', '') oder translate(). Vergleiche dazu Einen String in Python trimmen.
5. Wie lassen sich mehrere Zeichen aus einem String in Python entfernen?
Option 1 — translate() in einem Durchlauf:
s = "a1b2c3"
print(s.translate(str.maketrans("", "", "abc")))
# 123
Option 2 — re.sub() mit einem Muster:
import re
print(re.sub(r'[abc]', '', s))
# 123
Option 3 — eine Schleife mit replace() für eine kurze und übersichtliche Liste:
for ch in "abc":
s = s.replace(ch, "")
Bei zwei oder drei Zeichen ist eine Schleife gut geeignet. Bei größeren Mengen von zu löschenden Zeichen sind translate() oder ein regulärer Ausdruck in der Regel übersichtlicher und bei großen Eingaben schneller.
Fazit
Zeichen lassen sich aus Python-Strings mit replace() für feste Zeichen oder Teilstrings, translate() für Gruppen von Zeichen, re.sub() für musterbasierte Regeln und Slicing für positionsabhängige Änderungen entfernen. Entscheidend ist, die Methode passend zur jeweiligen Regel auszuwählen. Da Python-Strings unveränderlich sind, entsteht dabei immer ein neuer Wert, der anschließend zurückgegeben werden kann.
Weitere Themen sind Python-Stringfunktionen, die Umwandlung eines Strings in eine Liste und das Entfernen von Leerzeichen aus einem String.
Python-Anwendungen lassen sich aus GitHub über eine verwaltete Anwendungsplattform bereitstellen. Wenn ein Projekt verwaltete Inferenz benötigt, kann zusätzlich eine verwaltete Plattform für generative KI eingesetzt werden.


