W3docs

Python Strings: Ein vollständiger Leitfaden

Python Strings von Grund auf lernen: Erstellung, Indizierung, Slicing, f-Strings, integrierte Methoden und typische Fallstricke mit Beispielen.

Strings gehören zu den am häufigsten verwendeten Datentypen in Python. Jedes Mal, wenn Ihr Programm eine Datei liest, eine Nachricht anzeigt oder Eingaben verarbeitet, arbeitet es mit Strings. Dieses Kapitel behandelt die Erstellung von Strings, Indizierung und Slicing, die Verwendung integrierter Methoden sowie häufige Fehlerquellen.

Was ist ein string in Python?

Ein string ist eine geordnete, unveränderliche Folge von Unicode-Zeichen. „Unveränderlich" bedeutet, dass Sie ein Zeichen niemals direkt ändern können — jede Operation, die einen string scheinbar verändert, erstellt tatsächlich einen neuen. Strings können Buchstaben, Ziffern, Satzzeichen, Leerzeichen oder beliebige Unicode-Zeichen (einschließlich Emojis) enthalten.

greeting = "Hello, world!"
print(type(greeting))  # <class 'str'>
print(len(greeting))   # 13

Strings erstellen

Python akzeptiert drei Anführungszeichen-Stile, die alle gleichwertig sind:

single = 'Python'
double = "Python"
triple = """Python"""   # triple-double also works as '''Python'''

Einfache und doppelte Anführungszeichen

Verwenden Sie diejenigen, die das Escapen des Anführungszeichens innerhalb des Strings vermeiden:

message1 = "It's a great day"   # apostrophe is fine inside double quotes
message2 = 'She said "hello"'   # double quote is fine inside single quotes

Dreifach angeführte (mehrzeilige) Strings

Dreifache Anführungszeichen ermöglichen es einem string, mehrere Zeilen zu umspannen, ohne Escape-Sequenzen zu benötigen:

poem = """Roses are red,
Violets are blue,
Python is awesome,
And so are you."""
print(poem)

Ausgabe:

Roses are red,
Violets are blue,
Python is awesome,
And so are you.

Dreifach angeführte Strings sind auch die übliche Methode zum Schreiben von Docstrings — den Dokumentationsblöcken, die am Anfang von Funktionen, Klassen und Modulen stehen.

Andere Typen in Strings umwandeln

Verwenden Sie die eingebaute Funktion str(), um ein beliebiges Objekt in seine string-Darstellung umzuwandeln:

num = 42
pi  = 3.14
flag = True

print(str(num))   # '42'
print(str(pi))    # '3.14'
print(str(flag))  # 'True'

Zeichen indizieren

Python verwendet nullbasierte Indizierung: Das erste Zeichen befindet sich an Index 0. Sie können auch negative Indizes verwenden — -1 verweist auf das letzte Zeichen, -2 auf das vorletzte und so weiter.

python— editable, runs on the server

Der Zugriff auf einen Index außerhalb des gültigen Bereichs löst einen IndexError aus.

Strings slicen

Ein Slice extrahiert einen Teil eines Strings mit der Syntax s[start:stop:step].

TeilBedeutungStandard
startIndex des ersten einzuschließenden Zeichens0
stopIndex des ersten auszuschließenden Zeichenslen(s)
stepWie viele Zeichen bei jedem Schritt übersprungen werden1
s = "Hello, World!"

print(s[0:5])    # Hello     — characters at indexes 0–4
print(s[7:])     # World!    — from index 7 to the end
print(s[:5])     # Hello     — from the start to index 4
print(s[-6:])    # World!    — last 6 characters
print(s[::2])    # Hlo ol!   — every other character
print(s[::-1])   # !dlroW ,olleH  — reversed string

Einen tieferen Einblick in die Slicing-Syntax erhalten Sie im Kapitel Slicing Strings.

String-Verkettung und Wiederholung

Der Operator + verbindet zwei Strings; der Operator * wiederholt einen string eine bestimmte Anzahl von Malen.

python— editable, runs on the server

Bei umfangreicher Verkettung innerhalb einer Schleife sollten Sie str.join() anstelle von + verwenden — das ist deutlich schneller, da keine temporären string-Objekte erstellt werden:

words = ["one", "two", "three"]
result = ", ".join(words)
print(result)   # one, two, three

String-Wiederholung

python— editable, runs on the server

Die Operatoren in und not in

Prüfen Sie mit in oder not in, ob ein Teilstring innerhalb eines Strings vorhanden ist:

text = "The quick brown fox"
print("quick" in text)      # True
print("slow"  in text)      # False
print("slow"  not in text)  # True

String-Länge

len() gibt die Anzahl der Zeichen in einem string zurück:

s = "Python"
print(len(s))   # 6

empty = ""
print(len(empty))   # 0

Escape-Zeichen

Einige Zeichen können nicht direkt in einen string eingegeben werden. Python verwendet einen Backslash \, um Escape-Sequenzen einzuleiten:

SequenzZeichen
\nZeilenumbruch
\tTabulator
\\Literaler Backslash
\'Einfaches Anführungszeichen
\"Doppeltes Anführungszeichen
\rWagenrücklauf
print("Line one\nLine two")
# Line one
# Line two

print("Name:\tAlice")
# Name:	Alice

path = "C:\\Users\\Alice"
print(path)   # C:\Users\Alice

Um die Escape-Verarbeitung vollständig zu deaktivieren, stellen Sie dem string ein r voran, um einen Raw-string zu erstellen — nützlich für reguläre Ausdrücke und Windows-Pfade:

pattern = r"\d+\.\d+"   # treated literally, no escaping needed
print(pattern)           # \d+\.\d+

Die vollständige Liste finden Sie im Kapitel Escape Characters.

String-Formatierung

Python bietet mehrere Möglichkeiten, Variablenwerte in Strings einzubetten.

f-Strings (empfohlen — Python 3.6+)

Ein f-string wird mit f oder F als Präfix versehen. Ausdrücke innerhalb von {} werden zur Laufzeit ausgewertet:

name = "Alice"
age  = 30
print(f"My name is {name} and I am {age} years old.")
# My name is Alice and I am 30 years old.

# Expressions work too
print(f"Next year I'll be {age + 1}.")   # Next year I'll be 31.

Methode str.format()

python— editable, runs on the server

Prozent-Formatierung (%) (veraltet)

Älterer Python-Code verwendet die %-Formatierung. Sie werden ihr noch begegnen, aber f-Strings sind die moderne Variante:

print("Hello, %s!" % "Dave")   # Hello, Dave!
print("Pi ≈ %.2f" % 3.14159)   # Pi ≈ 3.14

Eine vollständige Übersicht der Formatierungsoptionen finden Sie in den Kapiteln String Formatting und f-Strings.

Häufige String-Methoden

Pythons str-Typ verfügt über Dutzende von eingebauten Methoden. Die am häufigsten verwendeten sind nachfolgend aufgeführt.

Groß- und Kleinschreibung

s = "Hello, World!"
print(s.upper())       # HELLO, WORLD!
print(s.lower())       # hello, world!
print(s.capitalize())  # Hello, world!
print(s.title())       # Hello, World!
print(s.swapcase())    # hELLO, wORLD!

Suchen und Zählen

s = "hello, world"
print(s.find("o"))       # 4   — index of first 'o', or -1 if not found
print(s.rfind("o"))      # 8   — index of last 'o'
print(s.count("l"))      # 3   — total occurrences of 'l'
print(s.startswith("he")) # True
print(s.endswith("ld"))   # True

Teilstrings ersetzen

s = "I like cats. Cats are great."
print(s.replace("cats", "dogs"))
# I like dogs. Cats are great.   (only lowercase 'cats' replaced)

print(s.replace("cats", "dogs").replace("Cats", "Dogs"))
# I like dogs. Dogs are great.

Leerzeichen entfernen

padded = "  hello  "
print(padded.strip())    # 'hello'   — both ends
print(padded.lstrip())   # 'hello  ' — left end only
print(padded.rstrip())   # '  hello' — right end only

Aufteilen und Verbinden

csv = "apple,banana,cherry"
items = csv.split(",")
print(items)   # ['apple', 'banana', 'cherry']

print(" | ".join(items))   # apple | banana | cherry

String-Inhalt prüfen

python— editable, runs on the server

Die vollständige Referenz finden Sie im Kapitel String Methods.

String-Unveränderlichkeit — ein häufiger Fallstrick

Strings können nicht direkt geändert werden. Der Versuch, einem Index zuzuweisen, löst einen TypeError aus:

s = "hello"
# s[0] = "H"   # TypeError: 'str' object does not support item assignment

Um einen Teil eines Strings zu ändern, erstellen Sie einen neuen:

s = "hello"
s = "H" + s[1:]   # slice off everything after index 0 and prepend "H"
print(s)           # Hello

Der Variablenname s zeigt nun auf ein anderes string-Objekt — das ursprüngliche "hello" bleibt unverändert (und wird vom Garbage Collector entfernt, wenn nichts anderes darauf verweist).

Strings vs. bytes

Ein Python-string (str) enthält Unicode-Text. Wenn Sie rohe Binärdaten benötigen — zum Beispiel um in eine Datei im Binärmodus zu schreiben oder Daten über ein Netzwerk zu senden — verwenden Sie stattdessen bytes:

b = b"hello"          # bytes literal
s = b.decode("utf-8") # bytes → str
b2 = s.encode("utf-8") # str → bytes
print(type(b))   # <class 'bytes'>
print(type(s))   # <class 'str'>

Übungen

Übung
In Python, which of the following are valid ways for declaring a string?
In Python, which of the following are valid ways for declaring a string?
Was this page helpful?