W3docs

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.

python— editable, runs on the server

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 world

Achtung: 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 wORLD

Leerzeichen 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"))  # hello

center(), 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))    # -0007

Suchen 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"))       # 9

Beide 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 ValueError

count()

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")))  # True

Dies 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.

python— editable, runs on the server

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.

python— editable, runs on the server

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"]))
# Python

Weitere 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.

MethodeGibt 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())  # True

Hinweis: 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.

python— editable, runs on the server

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.

python— editable, runs on the server

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

MethodeWas 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

Übungsaufgaben

Übung
Which of the following Python string methods return -1 when the substring is not found (instead of raising an error)?
Which of the following Python string methods return -1 when the substring is not found (instead of raising an error)?
Was this page helpful?