Python String-Methoden
Python String-Methoden meistern: strip, split, join, replace, find, upper, lower und mehr – mit ausführbaren Beispielen und Hinweisen zur Verwendung.
Strings in Python verfügen über eine umfangreiche Sammlung eingebauter Methoden, die nahezu jede Manipulation abdecken, die man je benötigt — Leerzeichen entfernen, suchen, aufteilen, zusammenfügen, Inhalte prüfen und formatieren. Da Strings unveränderlich (immutable) sind, gibt jede Methode einen neuen string (oder einen anderen Wert) zurück, anstatt das Original zu verändern.
Dieses Kapitel behandelt die wichtigsten String-Methoden nach Einsatzbereich gegliedert, mit Beispielen und häufigen Fallstricken. Hintergrundinformationen zur Erstellung und Indizierung von Strings findest du im Kapitel Python Strings. Zur Slice-Syntax siehe Slicing Strings.
Groß-/Kleinschreibung
upper() und lower()
upper() gibt eine Kopie des Strings zurück, bei der alle Buchstaben in Großbuchstaben umgewandelt sind; lower() macht das Gegenteil.
Diese Methoden sind für ASCII-Buchstaben nicht sprachabhängig. Für eine korrekte gebietsschemagerechte Schreibweise (z. B. das türkische I mit Punkt) verwendest du das locale-Modul oder Bibliotheken von Drittanbietern.
title() und capitalize()
title() schreibt den ersten Buchstaben jedes Wortes groß. capitalize() schreibt nur das erste Zeichen des gesamten Strings groß und konvertiert alles andere in Kleinbuchstaben.
s = "hello world"
print(s.title()) # Hello World
print(s.capitalize()) # Hello worldAchtung: title() behandelt jedes Nicht-Buchstaben-Zeichen als Wortgrenze, sodass aus "it's" "It'S" wird. Verwende die Funktion string.capwords() aus der Standardbibliothek, wenn du eine intelligentere Worterkennung benötigst.
swapcase()
Kehrt die Groß-/Kleinschreibung jedes Zeichens um — Großbuchstaben werden zu Kleinbuchstaben und umgekehrt.
print("Hello World".swapcase()) # hELLO wORLDLeerzeichen und Auffüllen
strip(), lstrip() und rstrip()
Diese Methoden entfernen führende und/oder abschließende Zeichen (standardmäßig Leerzeichen).
s = " Hello World "
print(s.strip()) # "Hello World"
print(s.lstrip()) # "Hello World "
print(s.rstrip()) # " Hello World"Du kannst einen string mit Zeichen übergeben, die entfernt werden sollen — kein Präfix/Suffix, sondern eine beliebige Kombination dieser Zeichen:
print("***hello***".strip("*")) # hello
print("xyzhelloyz".strip("xyz")) # hellocenter(), ljust() und rjust()
Füllen einen string auf eine bestimmte Breite auf. Ein optionales Füllzeichen (Standard: Leerzeichen) füllt den zusätzlichen Platz.
print("hi".center(10)) # " hi "
print("hi".ljust(10, "-")) # "hi--------"
print("hi".rjust(10, "-")) # "--------hi"Diese Methoden sind nützlich zum Erstellen von Texttabellen mit fester Breite.
zfill()
Füllt einen numerischen string mit führenden Nullen auf, um eine bestimmte Breite zu erreichen. Ein führendes +- oder --Zeichen wird dabei berücksichtigt.
print("42".zfill(5)) # 00042
print("-7".zfill(5)) # -0007Suchen und Zählen
find() und rfind()
find(sub) gibt den niedrigsten Index zurück, an dem sub gefunden wurde, oder -1, wenn nicht gefunden. rfind(sub) findet den höchsten (rechtesten) Index.
s = "Hello World"
print(s.find("World")) # 6
print(s.find("xyz")) # -1
print(s.rfind("l")) # 9Beide akzeptieren optionale start- und end-Argumente, um den Suchbereich einzugrenzen.
index() und rindex()
Funktionieren genau wie find() und rfind(), aber lösen ValueError aus anstatt -1 zurückzugeben, wenn der Teilstring nicht gefunden wird. Verwende find(), wenn das Fehlen ein normaler Fall ist; verwende index(), wenn das Fehlen auf einen Fehler hinweist.
s = "Hello World"
print(s.index("World")) # 6
# s.index("xyz") # raises ValueErrorcount()
Gibt die Anzahl der nicht überlappenden Vorkommen eines Teilstrings zurück.
print("banana".count("a")) # 3
print("banana".count("an")) # 2
print("aaaa".count("aa")) # 2 (non-overlapping)startswith() und endswith()
Geben True zurück, wenn der string mit dem angegebenen Präfix/Suffix beginnt oder endet. Beide akzeptieren ein Tupel von Strings, um mehrere Optionen gleichzeitig zu prüfen.
filename = "report.pdf"
print(filename.startswith("report")) # True
print(filename.endswith(".pdf")) # True
print(filename.endswith((".pdf", ".docx"))) # TrueDies ist oft lesbarer als Slicing: filename[-4:] == ".pdf".
Ersetzen und Aufteilen
replace(old, new, count=-1)
Gibt eine Kopie zurück, bei der jedes Vorkommen von old durch new ersetzt wurde. Übergib eine ganze Zahl als drittes Argument, um die Anzahl der Ersetzungen zu begrenzen.
replace() führt eine exakte wörtliche Übereinstimmung durch; für musterbasierten Ersatz verwendest du die Funktion re.sub() aus dem Kapitel Python Regex.
split(sep=None, maxsplit=-1)
Teilt den string an sep auf und gibt eine Liste zurück. Wenn sep weggelassen wird (oder None ist), wird an beliebigen Leerzeichen aufgeteilt und leere Strings werden verworfen — ideal zum Tokenisieren von Benutzereingaben.
split() gibt immer eine Liste zurück, auch wenn das Trennzeichen nicht vorhanden ist (die Liste enthält dann nur den ursprünglichen string).
rsplit(sep=None, maxsplit=-1)
Wie split(), aber beginnt von rechts. Nützlich, wenn du nur die letzten Teile eines Strings benötigst.
path = "/home/user/documents/file.txt"
print(path.rsplit("/", 1)) # ['/home/user/documents', 'file.txt']splitlines()
Teilt an Zeilengrenzen auf (\n, \r\n, \r und andere) und behält optional die Zeilenenden.
text = "line one\nline two\r\nline three"
print(text.splitlines()) # ['line one', 'line two', 'line three']join(iterable)
Das Gegenteil von split(). Verkettet jedes Element eines Iterables und platziert den string, auf dem die Methode aufgerufen wird, zwischen jedem Element. Dies ist die bevorzugte Methode, um aus einer Liste einen string zu erstellen, da Python ihn in einem Schritt aufbaut.
print(", ".join(["apples", "bananas", "cherries"]))
# apples, bananas, cherries
print("".join(["P", "y", "t", "h", "o", "n"]))
# PythonWeitere Details findest du im Kapitel Concatenate Strings.
Inhalte prüfen
Diese Methoden geben True oder False zurück und sind nützlich für die Eingabevalidierung.
| Methode | Gibt True zurück, wenn… |
|---|---|
isalpha() | Alle Zeichen sind Buchstaben |
isdigit() | Alle Zeichen sind Ziffern (0–9) |
isnumeric() | Alle Zeichen sind numerisch (inklusive ², ½ usw.) |
isalnum() | Alle Zeichen sind Buchstaben oder Ziffern |
isspace() | Alle Zeichen sind Leerzeichen |
islower() | Alle buchstabierten Zeichen sind Kleinbuchstaben |
isupper() | Alle buchstabierten Zeichen sind Großbuchstaben |
istitle() | Der string ist im Titelformat |
print("Python".isalpha()) # True
print("12345".isdigit()) # True
print("abc123".isalnum()) # True
print(" ".isspace()) # True
print("Hello World".istitle()) # TrueHinweis: Ein leerer string gibt bei all diesen Methoden False zurück.
Länge
len() ist eine eingebaute Funktion, keine String-Methode, aber sie ist grundlegend für die Arbeit mit Strings.
Strings sind nullbasiert indiziert, daher sind gültige Indizes 0 bis len(s) - 1.
Verkettung
Der +-Operator verbindet zwei Strings. Der *-Operator wiederholt einen string eine bestimmte Anzahl von Malen.
Beim Zusammenfügen vieler Strings oder beim Aufbauen von Strings in einer Schleife ist "".join(list) deutlich schneller als + in einer Schleife. Einen Leistungsvergleich findest du im Kapitel Concatenate Strings.
Formatierung
format() und f-Strings
str.format() fügt Werte in {}-Platzhalter ein. F-Strings (Python 3.6+) machen dasselbe prägnanter und sind nun der bevorzugte Stil.
name = "Alice"
score = 95
# str.format()
print("Hello, {}! Your score is {}.".format(name, score))
# f-string (preferred)
print(f"Hello, {name}! Your score is {score}.")
# Hello, Alice! Your score is 95.Beide unterstützen Formatangaben. Die vollständige Syntax findest du unter Python String Formatting.
encode()
Konvertiert den string in ein bytes-Objekt unter Verwendung der angegebenen Kodierung (Standard: utf-8).
s = "café"
print(s.encode("utf-8")) # b'caf\xc3\xa9'
print(s.encode("ascii", errors="replace")) # b'caf?'Kurzreferenz
| Methode | Was sie tut |
|---|---|
s.upper() | Alles in Großbuchstaben |
s.lower() | Alles in Kleinbuchstaben |
s.title() | Titelschreibweise (jedes Wort) |
s.capitalize() | Erstes Zeichen in Großbuchstaben |
s.swapcase() | Groß-/Kleinschreibung umkehren |
s.strip(chars) | Führende/abschließende Zeichen entfernen |
s.lstrip(chars) | Führende Zeichen entfernen |
s.rstrip(chars) | Abschließende Zeichen entfernen |
s.center(w, fill) | In einem Feld der Breite w zentrieren |
s.ljust(w, fill) | Linksbündig in einem Feld der Breite w |
s.rjust(w, fill) | Rechtsbündig in einem Feld der Breite w |
s.zfill(w) | Mit führenden Nullen auffüllen |
s.find(sub) | Niedrigster Index von sub, oder -1 |
s.rfind(sub) | Höchster Index von sub, oder -1 |
s.index(sub) | Wie find(), aber löst ValueError aus |
s.count(sub) | Nicht überlappende Vorkommen zählen |
s.startswith(prefix) | True, wenn der string mit dem Präfix beginnt |
s.endswith(suffix) | True, wenn der string mit dem Suffix endet |
s.replace(old, new) | Vorkommen ersetzen |
s.split(sep) | In Liste aufteilen |
s.rsplit(sep) | Von rechts aufteilen |
s.splitlines() | An Zeilenenden aufteilen |
sep.join(iterable) | Iterable mit Trennzeichen verbinden |
s.isalpha() | Nur Buchstaben? |
s.isdigit() | Nur Ziffern? |
s.isalnum() | Nur Buchstaben oder Ziffern? |
s.isspace() | Nur Leerzeichen? |
s.format(...) | Mit Platzhaltern formatieren |
s.encode(enc) | In Bytes kodieren |