W3docs

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

python— editable, runs on the server

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 Lovelace

Bei 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

python— editable, runs on the server

Groß- und Kleinschreibung ändern

Python bietet mehrere Methoden zum Ändern der Groß-/Kleinschreibung eines string.

MethodeWas sie tutBeispiel 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

python— editable, runs on the server

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 -1

Strings in Python slicen

python— editable, runs on the server

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)  # csv

Einen 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 only
I 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.

MethodeEntfernt 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/bin

Strings 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/bin

Die 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"))  # 10

startswith() 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://")) # False

Du kannst ein Tupel von Präfixen/Suffixen übergeben, um mehrere Optionen gleichzeitig zu prüfen:

filename = "photo.jpg"
print(filename.endswith((".jpg", ".jpeg", ".png")))  # True

count()

count(sub) gibt an, wie oft sub im string vorkommt (nicht überlappend).

text = "banana"
print(text.count("a"))   # 3
print(text.count("an"))  # 2

String-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-case

Diese 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: Lovelace

Schnellreferenz

OperationSyntaxGibt zurück
Verkettena + bNeuer string
Wiederholens * nNeuer string
Großbuchstabens.upper()Neuer string
Kleinbuchstabens.lower()Neuer string
Titelschreibweises.title()Neuer string
Slicens[start:stop:step]Neuer string
Ersetzens.replace(old, new)Neuer string
Entfernens.strip()Neuer string
Aufteilens.split(sep)Liste
Zusammenfügensep.join(iterable)Neuer string
Suchens.find(sub)Ganzzahliger Index oder -1
Zählens.count(sub)Ganzzahl
Beginnt mits.startswith(prefix)boolean
Endet mits.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.

Übung

Übung
Which of the following Python string methods or operations return a new string rather than modifying in place?
Which of the following Python string methods or operations return a new string rather than modifying in place?
Was this page helpful?