Zeichen aus einem String in Python entfernen
Um Zeichen aus einem String in Python zu entfernen, muss ein neuer String erzeugt werden, da sich str-Objekte nach ihrer Erstellung nicht mehr verändern lassen. Für einzelne Zeichen oder Teilstrings eignet sich str.replace(). Sollen mehrere Zeichen in einem Durchgang gelöscht werden, können str.translate() oder str.maketrans() verwendet werden. re.sub() eignet sich für musterbasierte Regeln, während Slicing sinnvoll ist, wenn Zeichen am Anfang, am Ende oder an einem bestimmten Index entfernt werden sollen.
Dieses Tutorial zeigt die verschiedenen Methoden anhand ausführbarer Beispiele in der interaktiven Python-Konsole. Wenn ausschließlich Leerzeichen entfernt werden sollen, bietet sich eine Anleitung zum Entfernen von Leerzeichen aus Python-Strings an.
Python-Anwendungen lassen sich direkt aus GitHub über eine verwaltete Anwendungsplattform bereitstellen, 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 String unverändert bleibt.
- Für ein einzelnes Zeichen oder einen Teilstring kann
replace(old, '')verwendet werden. Mit einem dritten Argument lässt sich festlegen, wie viele Ersetzungen maximal durchgeführt werden. - Mit
translate()in Kombination mitstr.maketrans('', '', chars)oder einem Mapping-Dictionary können mehrere Zeichen in nur einem Durchlauf entfernt werden. re.sub()eignet sich besonders dann, wenn die Entfernung auf einem Muster basiert, beispielsweise bei Ziffern, Satzzeichen oder Nicht-ASCII-Zeichen.- Mit Slicing, etwa über
s[1:],s[:-1]oders[:i] + s[i+1:], lassen sich das erste, letzte oder ein über einen Index bestimmtes Zeichen entfernen, ohne den gesamten String nach einem bestimmten Zeichen durchsuchen zu müssen. strip(),lstrip()undrstrip()entfernen Zeichen am Anfang oder Ende eines Strings, häufig Leerzeichen. Beliebige Zeichen innerhalb des Strings werden damit nicht gelöscht.- Listen besitzen die Methode
remove(), Strings hingegen nicht. Wirdremove()auf einem String aufgerufen, entsteht einAttributeError.
Die passende Methode zum Entfernen von Zeichen auswählen
| Methode | Geeignet für | Einschränkung |
|---|---|---|
replace() |
Ein einzelnes Zeichen oder einen Teilstring mit einfachen literalen Werten entfernen | Für mehrere unterschiedliche Zeichen sind verkettete Aufrufe oder eine Schleife erforderlich |
translate() / maketrans() |
Viele verschiedene Zeichen gleichzeitig entfernen | Bei komplexeren Regeln kann die Lesbarkeit abnehmen |
re.sub() |
Ziffern, Gruppen von Satzzeichen oder durch reguläre Ausdrücke definierte Werte entfernen | Bei einem einzelnen literalen Wert normalerweise langsamer als replace() |
| Slicing | Das erste, letzte oder ein positionsabhängiges Zeichen entfernen | Nicht geeignet, um jedes Vorkommen eines Zeichens innerhalb eines Strings zu löschen |
strip() / lstrip() / rstrip() |
Unerwünschte Zeichen am Anfang oder Ende entfernen, beispielsweise Leerzeichen oder \n |
Zeichen in der Mitte des Strings bleiben unverändert |
Zeichen mit replace() entfernen
str.replace() erzeugt eine Kopie eines Strings, in der jedes Vorkommen des ersten Arguments durch das zweite Argument ersetzt wird. Wird als Ersatz ein leerer String angegeben, werden die passenden Zeichen oder Teilstrings gelöscht.
Zunächst wird ein Beispiel-String definiert:
s = 'abc12321cba'
Alle Vorkommen von a entfernen:
print(s.replace('a', ''))
Ausgabe:
Output
bc12321cb
Beide a-Zeichen wurden entfernt. Der ursprüngliche Wert von s bleibt jedoch weiterhin 'abc12321cba'.
Zeilenumbrüche entfernen
s = 'ab\ncd\nef'
print(s.replace('\n', ''))
Ausgabe:
Output
abcdef
Einen Teilstring entfernen
print('Helloabc'.replace('Hello', ''))
Ausgabe:
Output
abc
Anzahl der Ersetzungen begrenzen
Mit dem optionalen dritten Argument lässt sich die maximale Anzahl der Ersetzungen festlegen:
print('abababab'.replace('a', 'A', 2))
Ausgabe:
Output
AbAbabab
Nur die ersten beiden a-Zeichen werden verändert. Weitere Einzelheiten bietet eine ausführliche Einführung zu Python String replace().
Zeichen mit translate() entfernen
str.translate() verarbeitet jedes Zeichen mithilfe einer Übersetzungstabelle. Zeichen, die entfernt werden sollen, können auf None abgebildet werden. Alternativ lässt sich str.maketrans mit einer Menge zu löschender Zeichen einsetzen.
Alle Vorkommen von b entfernen:
s = 'abc12321cba'
print(s.translate({ord('b'): None}))
Ausgabe:
Output
ac12321ca
Mehrere Zeichen mit einem einzigen Aufruf entfernen:
print(s.translate({ord(i): None for i in 'abc'}))
Ausgabe:
Output
12321
Auf dieselbe Weise lassen sich auch Zeilenumbrüche entfernen:
print('ab\ncd\nef'.translate({ord('\n'): None}))
Ausgabe:
Output
abcdef
str.maketrans('', '', ',!') erstellt eine Übersetzungstabelle, die ausschließlich zum Löschen bestimmter Zeichen dient und häufig leichter zu lesen ist als eine Dictionary-Comprehension:
string = "Hello, World!"
print(string.translate(str.maketrans("", "", ",!")))
# Hello World
Zeichen mit regulären Ausdrücken entfernen
re.sub() ist sinnvoll, wenn die Regel zum Entfernen von Zeichen auf einem Muster und nicht auf einem festen literalen Wert beruht. Vor der Verwendung muss zunächst re importiert werden.
Ziffern entfernen:
import re
text = "Hello123 World456"
print(re.sub(r'\d+', '', text))
# Hello World
Nicht-alphanumerische Zeichen entfernen:
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
Eine ausführlichere Einführung in die Mustersyntax bieten Anleitungen zu regulären Ausdrücken in Python.
Zeichen mit Slicing und Comprehensions entfernen
Slicing entfernt Zeichen anhand ihrer Position, ohne den gesamten String nach einem bestimmten Wert 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 innerhalb von join kann verwendet werden, um einzelne Zeichen zu filtern:
vowels = 'aeiouAEIOU'
print(''.join(c for c in 'hello world' if c not in vowels))
# hll wrld
Performance bei großen Strings
Bei einem lokalen Test mit Python 3.12 und einem String mit einer Million Zeichen ergaben sich ungefähr folgende Resultate:
| Aufgabe | Schnellster Ansatz |
|---|---|
| Ein häufig wiederkehrendes Zeichen entfernen | replace() |
| Mehrere unterschiedliche Zeichen entfernen | translate() oder ein einzelnes re.sub('[abc]', '') |
| Musterbasierte Bereinigung | re.sub() |
Mehrere hintereinander ausgeführte replace()-Aufrufe verursachen bei sehr großen Strings mehr Aufwand als ein einzelner Aufruf von translate() oder ein einzelner regulärer Ausdruck. Bei üblichen Strings in Anwendungen sind jedoch alle genannten Methoden normalerweise schnell genug. Profiling wird vor allem dann relevant, wenn pro Anfrage mehrere Megabyte Text verarbeitet werden.
Unerwünschte Zeichen in Pandas-Spalten entfernen
In Datenverarbeitungs-Workflows können String-Methoden auf einzelne Spalten angewendet werden.
Nur Ziffern behalten lässt sich mit .str.replace() und einer Capture Group umsetzen:
import pandas as pd
df = pd.DataFrame({'strings': ['123abc', '456def', '789ghi']})
df['strings'] = df['strings'].str.extract(r'(\d+)')[0]
print(df)
Benutzerdefinierte Filterung mit .apply():
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 entfernt man ein Zeichen aus einem String in Python?
Verwenden Sie replace() mit einem leeren String als Ersatzwert:
text = "Hello, World!"
print(text.replace(",", ""))
# Hello World!
Sollen mehrere unterschiedliche Zeichen gelöscht werden, sind translate() oder re.sub() meist besser geeignet, als zahlreiche replace()-Aufrufe miteinander zu verketten.
2. Gibt es eine remove()-Methode für Python-Strings?
Nein. Mit list.remove() lässt sich ein Element aus einer Liste löschen, Strings besitzen jedoch keine remove()-Methode. Der Aufruf "abc".remove("a") führt zu einem AttributeError. Für Strings können stattdessen replace(), translate(), re.sub() oder Slicing eingesetzt werden.
3. Wie entfernt man ein Zeichen anhand seines Index aus einem String?
Mit Slicing kann der Index ausgelassen werden, der entfernt werden soll:
s = "EXAMPLE"
i = 2 # remove 'A' at index 2
print(s[:i] + s[i+1:])
# EXMPLE
Sollen alle Vorkommen eines Zeichens unabhängig von ihrer Position entfernt werden, sollte anstelle von indexbasiertem Slicing replace() oder translate() verwendet werden.
4. Was ist strip() in Python und wann sollte es verwendet werden?
strip() entfernt Zeichen am Anfang und Ende eines Strings. Standardmäßig werden dabei Leerzeichen entfernt. Die Varianten lstrip() und rstrip() führen dieselbe Art der Bereinigung jeweils nur auf einer Seite durch. Zeichen in der Mitte eines Strings werden von diesen Methoden nicht entfernt. strip() eignet sich beispielsweise nach dem Einlesen von Zeilen aus einer Datei. Befinden sich Zeilenumbrüche dagegen an beliebigen Stellen im Text, können replace('\n', '') oder translate() verwendet werden. Dieses Verhalten lässt sich mit dem allgemeinen Trimmen von Strings in Python vergleichen.
5. Wie entfernt man mehrere Zeichen aus einem String in Python?
Option 1 — translate() in einem einzigen Durchgang:
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 — Schleife mit replace() für eine kurze und leicht lesbare Liste:
for ch in "abc":
s = s.replace(ch, "")
Bei zwei oder drei Zeichen ist eine Schleife gut geeignet. Für größere Mengen zu löschender Zeichen sind translate() oder ein regulärer Ausdruck bei großen Eingaben meist übersichtlicher und schneller.
Fazit
Zeichen lassen sich aus Python-Strings mit replace() für literale Werte, mit translate() für mehrere Zeichen, mit re.sub() für Muster und mit Slicing für positionsbasierte Änderungen entfernen. Entscheidend ist, die Methode passend zur jeweiligen Regel auszuwählen. Da Strings unveränderlich sind, entsteht dabei immer ein neuer Wert, der anschließend an den aufrufenden Code zurückgegeben werden kann.
Als weitere Themen bieten sich Python-String-Funktionen, die Umwandlung eines Strings in eine Liste und das Entfernen von Leerzeichen aus Strings an.
Python-Anwendungen können aus GitHub über eine verwaltete Anwendungsplattform bereitgestellt werden. Wenn ein Projekt verwaltete Inferenz benötigt, lässt sich die Entwicklung zusätzlich auf einer verwalteten Plattform für generative KI fortsetzen.
Für weitere Projekte stehen außerdem allgemeine Lösungen für Computing, Speicher, Netzwerke und verwaltete Datenbanken zur Verfügung.


