Strings modifizieren
Strings in Python modifizieren mit Verkettung, Slicing, Groß-/Kleinschreibung, replace, strip, split, join und mehr. Mit ausführbaren Beispielen.
Python-Strings sind Zeichenfolgen, die in Anführungszeichen eingeschlossen sind. Obwohl Strings unveränderlich (immutable) sind — man kann sie nicht direkt bearbeiten — bietet Python eine umfangreiche Sammlung von Operatoren und Methoden, die neue, modifizierte Strings zurückgeben. Dieses Kapitel behandelt die wichtigsten Techniken: Verkettung, Wiederholung, Groß-/Kleinschreibungskonvertierung, Slicing, Ersetzen von Teilstrings, Entfernen von Leerzeichen, Aufteilen und Zusammenfügen und vieles mehr.
Schlüsselkonzept: Strings sind unveränderlich
Bevor wir beginnen, ist es wichtig zu verstehen, dass jede „Modifizierungs"-Methode einen neuen string zurückgibt. Der ursprüngliche string wird niemals verändert.
greeting = "hello"
upper_greeting = greeting.upper()
print(greeting) # hello (unchanged)
print(upper_greeting) # HELLO (new string)Das bedeutet, du musst das Ergebnis einer Variablen zuweisen (oder es direkt verwenden), um die Änderung beizubehalten.
String-Verkettung
Die Verkettung kombiniert zwei oder mehr Strings zu einem mithilfe des +-Operators. Du kannst beliebig viele Strings aneinanderreihen.
Strings in Python verketten
Verkettung mit Variablen und Literalen
Du kannst string-Variablen mit string-Literalen mischen:
first_name = "Ada"
last_name = "Lovelace"
full_name = first_name + " " + last_name
print(full_name) # Ada LovelaceBei größeren Textmengen empfehlen sich Format-Strings oder f-Strings, die leichter lesbar sind als lange Ketten von +.
String-Wiederholung
Der *-Operator wiederholt einen string eine bestimmte Anzahl von Malen. Dies ist nützlich zum Erzeugen von Trennzeichen, Auffüllen oder einfachen Mustern.
Einen string in Python wiederholen
Groß- und Kleinschreibung ändern
Python bietet mehrere Methoden zum Ändern der Groß-/Kleinschreibung eines string.
| Methode | Was sie tut | Beispiel Eingabe → Ausgabe |
|---|---|---|
upper() | Alle Buchstaben in Großbuchstaben | "hello" → "HELLO" |
lower() | Alle Buchstaben in Kleinbuchstaben | "HELLO" → "hello" |
title() | Erster Buchstabe jedes Worts großgeschrieben | "hello world" → "Hello World" |
capitalize() | Erster Buchstabe groß, Rest klein | "hELLO" → "Hello" |
swapcase() | Tauscht Groß↔Klein für jeden Buchstaben | "Hello" → "hELLO" |
Einen string in Python in Groß- oder Kleinbuchstaben umwandeln
Groß-/Kleinschreibungsmethoden werden häufig beim Vergleich von Benutzereingaben verwendet, unabhängig davon, wie sie getippt wurden:
answer = input("Type yes or no: ")
if answer.lower() == "yes":
print("You said yes!")Strings slicen
Slicing extrahiert einen Teil eines string mithilfe der [start:stop:step]-Syntax. Das Ergebnis ist ein neuer string, der die Zeichen von Index start bis — aber nicht einschließlich — Index stop enthält.
H e l l o , W o r l d !
0 1 2 3 4 5 6 7 8 9 10 11 12
-13-12-11-10-9 -8 -7 -6 -5 -4 -3 -2 -1Strings in Python slicen
Wann negative Indizes verwendet werden
Negative Indizes zählen vom Ende des string. Index -1 ist das letzte Zeichen, -2 ist das vorletzte usw. Das ist praktisch, wenn du den hinteren Teil eines string abrufen möchtest, ohne dessen Länge zu kennen:
filename = "report_2024.csv"
extension = filename[-3:]
print(extension) # csvEinen ausführlichen Überblick findest du im Kapitel Strings slicen.
Teilstrings ersetzen
Die Methode replace(old, new) gibt eine Kopie des string zurück, bei der jedes Vorkommen von old durch new ersetzt wurde. Mit einem dritten Argument count kannst du die Anzahl der Ersetzungen begrenzen.
Einen Teil eines string in Python ersetzen
text = "I like cats. Cats are great. Cats!"
print(text.replace("Cats", "Dogs")) # replaces all occurrences
print(text.replace("Cats", "Dogs", 1)) # replaces first occurrence onlyI like cats. Dogs are great. Dogs!
I like cats. Dogs are great. Cats!Beachte, dass replace() zwischen Groß- und Kleinschreibung unterscheidet: "cats" und "Cats" werden als unterschiedliche Teilstrings behandelt.
Leerzeichen entfernen
Leerzeichen (Leerzeichen, Tabulatoren, Zeilenumbrüche) am Anfang oder Ende eines string müssen häufig entfernt werden, besonders bei der Verarbeitung von Benutzereingaben oder beim Lesen von Dateien.
| Methode | Entfernt Leerzeichen von |
|---|---|
strip() | Beiden Seiten |
lstrip() | Links (Anfang) |
rstrip() | Rechts (Ende) |
raw = " hello world "
print(repr(raw.strip())) # 'hello world'
print(repr(raw.lstrip())) # 'hello world '
print(repr(raw.rstrip())) # ' hello world'Du kannst auch bestimmte Zeichen entfernen, indem du sie als Argument übergibst:
path = "///usr/local/bin///"
print(path.strip("/")) # usr/local/binStrings aufteilen
Die Methode split(sep) teilt einen string an einem Trennzeichen auf und gibt eine Liste von Teilstrings zurück. Ohne Argument wird an beliebigen Leerzeichen geteilt und leere Strings werden entfernt.
sentence = "Python is easy to learn"
words = sentence.split()
print(words) # ['Python', 'is', 'easy', 'to', 'learn']
csv_row = "Alice,30,Engineer"
fields = csv_row.split(",")
print(fields) # ['Alice', '30', 'Engineer']Übergib ein zweites Argument maxsplit, um die Anzahl der Aufteilungen zu begrenzen:
data = "one:two:three:four"
print(data.split(":", 2)) # ['one', 'two', 'three:four']Strings zusammenfügen
join() ist das Gegenteil von split(). Es verbindet eine Liste von Strings zu einem einzigen, indem ein Trennzeichen zwischen jedes Element gesetzt wird. Das Trennzeichen ist der string, auf dem join() aufgerufen wird.
words = ["Python", "is", "fun"]
sentence = " ".join(words)
print(sentence) # Python is fun
path_parts = ["usr", "local", "bin"]
path = "/".join(path_parts)
print(path) # usr/local/binDie Verwendung von join() ist wesentlich effizienter als das Verketten von Strings in einer Schleife, da jedes + ein neues string-Objekt erzeugt. join() reserviert den endgültigen string nur einmal.
Suche innerhalb von Strings
Mehrere Methoden helfen dabei, Text in einem string zu finden.
find() und index()
find(sub) gibt den Index des ersten Vorkommens von sub zurück oder -1, wenn es nicht gefunden wird. index(sub) tut dasselbe, löst aber einen ValueError aus, anstatt -1 zurückzugeben.
text = "the quick brown fox"
print(text.find("quick")) # 4
print(text.find("slow")) # -1
print(text.index("brown")) # 10startswith() und endswith()
Diese geben True oder False zurück und sind eine sauberere Alternative zum Slicing, wenn du den Anfang oder das Ende eines string überprüfen möchtest.
url = "https://www.w3docs.com"
print(url.startswith("https")) # True
print(url.endswith(".com")) # True
print(url.startswith("http://")) # FalseDu kannst ein Tupel von Präfixen/Suffixen übergeben, um mehrere Optionen gleichzeitig zu prüfen:
filename = "photo.jpg"
print(filename.endswith((".jpg", ".jpeg", ".png"))) # Truecount()
count(sub) gibt an, wie oft sub im string vorkommt (nicht überlappend).
text = "banana"
print(text.count("a")) # 3
print(text.count("an")) # 2String-Eigenschaften prüfen
Python verfügt über eine Familie von is*-Methoden, die True oder False über den Inhalt eines string zurückgeben.
print("hello".isalpha()) # True – all alphabetic
print("hello123".isalnum()) # True – all alphanumeric
print("12345".isdigit()) # True – all digits
print(" ".isspace()) # True – all whitespace
print("Hello World".istitle()) # True – title-caseDiese sind besonders nützlich für die Eingabevalidierung.
Praktisches Beispiel: Benutzereingaben bereinigen
Die String-Modifizierung in der Praxis kombiniert häufig mehrere Techniken:
raw_input = " Ada Lovelace "
# Clean and normalise
name = raw_input.strip() # remove surrounding spaces
name = name.title() # ensure proper capitalisation
parts = name.split() # split into first / last
first, last = parts[0], parts[1]
print(f"First: {first}, Last: {last}") # First: Ada, Last: LovelaceSchnellreferenz
| Operation | Syntax | Gibt zurück |
|---|---|---|
| Verketten | a + b | Neuer string |
| Wiederholen | s * n | Neuer string |
| Großbuchstaben | s.upper() | Neuer string |
| Kleinbuchstaben | s.lower() | Neuer string |
| Titelschreibweise | s.title() | Neuer string |
| Slicen | s[start:stop:step] | Neuer string |
| Ersetzen | s.replace(old, new) | Neuer string |
| Entfernen | s.strip() | Neuer string |
| Aufteilen | s.split(sep) | Liste |
| Zusammenfügen | sep.join(iterable) | Neuer string |
| Suchen | s.find(sub) | Ganzzahliger Index oder -1 |
| Zählen | s.count(sub) | Ganzzahl |
| Beginnt mit | s.startswith(prefix) | boolean |
| Endet mit | s.endswith(suffix) | boolean |
Die vollständige Liste der integrierten string-Methoden findest du unter String-Methoden. Informationen zu Escape-Sequenzen wie \n und \t findest du unter Escape-Zeichen. Für leistungsstarke Textsuche und -manipulation mit Mustern, siehe Python Regex.