Text, aber mit Methoden
Ein Python-String ist eine Zeichenfolge, und Strings wirst du mehr nutzen als jeden anderen Typ. Jeder Name, jedes Label, jede Nachricht, jede URL, jeder Dateipfad und jede API-Antwort lebt irgendwann in einem String.
Erstell einen mit Anführungszeichen — einfach, doppelt oder dreifach:
Einfache und doppelte Anführungszeichen sind austauschbar. Nimm das, was dir ein Escape erspart. "don't" ist sauber; 'don\'t' braucht einen Backslash.
Strings sind unveränderlich. Sobald ein String existiert, kannst du kein Zeichen davon an Ort und Stelle ändern. Jede Operation, die so aussieht, als würde sie den String ändern, liefert in Wirklichkeit einen neuen zurück. Deshalb schreibst du text = text.upper() und nicht nur text.upper() — ohne die Neuzuweisung würde der neue Großbuchstaben-String weggeworfen.
Verbinden und Wiederholen
Zwei Operatoren erledigen das meiste, was du beim Zusammenfügen von Strings brauchst:
+ verkettet Strings. * wiederholt einen String. Beide liefern einen neuen String.
Viele Stücke mit + zu verketten, wird schnell hässlich. Wenn du Werte verschiedener Typen in eine Nachricht mischst, greif stattdessen zu f-Strings — siehe den nächsten Abschnitt.
f-Strings: der Weg, wie du meistens formatierst
Setz ein f vor das öffnende Anführungszeichen, und der String wird zur Schablone. Alles in {...} wird durch den Wert des Ausdrucks ersetzt:
In die Klammern kann jeder Ausdruck — Variablen, Arithmetik, Methodenaufrufe, Funktionsaufrufe. Halt sie aber einfach; wenn du eine dreizeilige Berechnung in {...} quetschen willst, berechne sie lieber vorher in eine benannte Variable.
f-Strings unterstützen außerdem Formatangaben nach einem Doppelpunkt, für Zahlenformat, Auffüllen und Ausrichtung:
Diese Formatangaben sind dieselben wie bei str.format() und lohnen sich einen kurzen Überblick, sobald du mit den Grundlagen sicher bist. Für Tag-eins-Code brauchst du sie noch nicht.
Slicing: ein Stück herausnehmen
Strings sind wie Sequenzen indizierbar. Jedes Zeichen hat eine nullbasierte Position, und du kannst ein einzelnes Zeichen oder einen Bereich herausgreifen:
Das Muster [start:stop:step] taucht auch bei Listen und anderen Sequenzen auf, daher lohnt es sich, ein paar Minuten darin zu investieren — der Gewinn zieht sich durch den gesamten Code.
Zwei Punkte verdienen Aufmerksamkeit:
- Der
stop-Index ist exklusiv:word[0:2]enthält die Indizes 0 und 1, nicht 2. - Negative Indizes zählen vom Ende:
-1ist das letzte Zeichen,-2das davor und so weiter.
Wie man einen String umdreht
Strings haben keine .reverse()-Methode — sie sind unveränderlich —, aber Slicing mit Schrittweite -1 erledigt den Job in einer Zeile:
word[::-1] liest sich als „von Anfang bis Ende, Schrittweite rückwärts 1“. Das Ergebnis ist ein brandneuer String; das Original bleibt unangetastet. Willst du die Zeichen rückwärts durchlaufen, ohne einen neuen String zu materialisieren, gibt dir reversed(word) einen Lazy-Iterator.
Wie man die Länge eines Strings prüft
len(text) gibt die Anzahl der Zeichen zurück:
Beachte, dass len Unicode-Codepunkte zählt, keine Bytes. len("café") ist 4, nicht 5, obwohl die UTF-8-Kodierung mehr Bytes braucht — und meistens ist genau das, was du willst.
Wie man prüft, ob ein String einen Teilstring enthält
Der Operator in ist die idiomatische Prüfung und liest sich wie Englisch:
Für case-insensitive Prüfungen beide Seiten zuerst normalisieren:
Brauchst du die Position statt ja/nein, nimm .find() — das gibt den Index zurück oder -1, wenn der Teilstring fehlt.
Häufige String-Methoden
Strings haben Dutzende Methoden. Zu dieser Handvoll wirst du ständig greifen:
Trennen und zusammensetzen:
.split(separator) verwandelt einen String in eine Liste. separator.join(list_of_strings) klebt sie wieder zusammen. Diese beiden Methoden erledigen unverhältnismäßig viel String-Arbeit im Alltag.
Noch ein nützliches Paar:
Das ist ein Parser für einen einzeiligen Config-Eintrag, in drei Zeilen. Kleine Strings, große Hebelwirkung.
Prüfen, was drin ist
Mehrere Methoden liefern Booleans, nützlich in if-Bedingungen:
Setz sie sparsam ein — sie bilden Unicode-Eigenheiten nicht in jeder Hinsicht so ab, wie du vielleicht erwartest. Für alles jenseits von ASCII stütz dich auf das Regex-Modul oder unicodedata.
Sonderzeichen maskieren
Manche Zeichen brauchen einen Backslash, damit sie in einem String vorkommen können:
Wenn du Windows-Pfade oder Regexes schreibst, machen Raw-Strings dir das Leben leichter. Setz ein r vor das Anführungszeichen, und Backslashes sind keine Escape-Zeichen mehr:
Strings sind überall, also bleib lesbar
Drei Gewohnheiten, die stringlastigen Code vor einer Suppe bewahren:
- Nutz f-Strings zum Interpolieren. Keine
+-Ketten über mehrere Typen. - Weise neu zu, wenn du „veränderst“.
text = text.strip(), nichttext.strip()allein. - Greif zu
.split()und.join(), bevor du von Hand Schleifen zum Parsen oder Zusammenbauen von Text schreibst. Sie sind schneller, klarer und schwerer falsch zu machen.
Als Nächstes: f-Strings im Detail — das Formatierungswerkzeug, das du schon mehrmals gesehen hast, plus die Zahlen- und Datumsformate, die sie zu meistern wert machen.
Häufig gestellte Fragen
Was ist ein f-String in Python?
Ein f-String ist ein String-Literal mit einem vorangestellten f, bei dem alles innerhalb von {...} durch den Wert dieses Ausdrucks ersetzt wird. Beispiel: f"Hello, {name}!" setzt den aktuellen Wert von name zur Laufzeit in den String ein.
Wie drehe ich einen String in Python um?
Nutz Slicing mit Schrittweite -1: reversed_text = original[::-1]. Das gibt einen neuen String aus denselben Zeichen in umgekehrter Reihenfolge zurück. Der ursprüngliche String bleibt unangetastet, weil Strings in Python unveränderlich sind.
Wie teile ich einen String in Python auf?
Ruf .split() auf dem String auf. Ohne Argument trennt es an beliebigem Leerraum: "a b c".split() liefert ['a', 'b', 'c']. Du kannst einen bestimmten Trenner übergeben: "a,b,c".split(",") liefert ['a', 'b', 'c'].
Sind Python-Strings veränderbar?
Nein. Strings sind unveränderlich — sobald ein String existiert, kannst du keines seiner Zeichen an Ort und Stelle ändern. Jede Methode, die einen String „verändert“, gibt in Wahrheit einen neuen zurück. Deshalb siehst du Muster wie text = text.strip() — du weist der Variablen den neuen String zu.
Wie verkette ich Strings in Python?
Nutz +, um zwei Strings zusammenzufügen: "hello" + " " + "world". Für einen Wert in einem Satz: nimm lieber einen f-String: f"Hello, {name}". Um viele Teile aus einer Liste zusammenzusetzen: separator.join(pieces) — schneller und lesbarer als aneinandergereihte +.
Wie prüfe ich die Länge eines Strings in Python?
Ruf das eingebaute len(text) auf. Es gibt die Zeichenanzahl (Unicode-Codepunkte) zurück, also ist len("café") gleich 4. Für die Byte-Länge zuerst kodieren: len(text.encode("utf-8")).