Strings slicen
Python String Slicing mit Syntax, Indexdiagrammen, Step-Werten, negativen Indizes und praktischen Beispielen erklärt.
Python String Slicing
String Slicing ermöglicht es, einen Teilstring aus einem längeren string zu extrahieren, indem man festlegt, wo man beginnt, wo man aufhört und wie viele Zeichen man jeweils überspringt. Es ist eine der häufigsten string-Operationen in Python und wird überall eingesetzt – vom Parsen von Dateinamen bis zum Umkehren von Wörtern.
Dieses Kapitel behandelt:
- Die
[start:stop:step]-Syntax und wie Indizes auf Zeichen abgebildet werden - Das Weglassen von start oder stop (Slicing vom Anfang oder bis zum Ende)
- Negative Indizes (vom rechten Ende zählen)
- Den step-Parameter (Zeichen überspringen, einen string umkehren)
- Häufige Fallstricke: Indizes außerhalb des Bereichs, leere Slices
- Praktische Beispiele, die sofort ausgeführt werden können
Wenn Sie neu bei Strings in Python sind, lesen Sie zuerst das Kapitel Python Strings – es erklärt, wie Strings erstellt und indiziert werden.
Wie String-Indizes funktionieren
Jedes Zeichen in einem Python-string hat zwei Indizes: einen positiven (vom linken Ende zählend, beginnend bei 0) und einen negativen (vom rechten Ende zählend, beginnend bei -1).
Für den string "Hello, World!":
H e l l o , W o r l d !
0 1 2 3 4 5 6 7 8 9 10 11 12 ← positive
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 ← negativeDie vollständige Slicing-Syntax lautet:
string[start:stop:step]start— Index des ersten einzuschließenden Zeichens (Standard:0)stop— Index des ersten auszuschließenden Zeichens (Standard: Ende des string)step— wie viele Zeichen Python nach jedem Schritt vorwärts springt (Standard:1)
Der stop-Index ist exklusiv – das Zeichen bei stop wird niemals in das Ergebnis einbezogen.
Grundlegendes String Slicing
Geben Sie einen Start- und Stopp-Index an, getrennt durch einen Doppelpunkt, um die Zeichen dazwischen zu extrahieren.
my_string[0:3] gibt die Zeichen an den Positionen 0, 1 und 2 zurück – das Zeichen an Index 3 ('l') ist nicht enthalten.
Start oder Stop weglassen
Lassen Sie start weg, um vom allerersten Zeichen zu beginnen, oder lassen Sie stop weg, um bis zum allerletzten Zeichen fortzufahren.
my_string[:] ist ein gebräuchliches Idiom zum Kopieren eines string (obwohl Strings in Python unveränderlich sind und daher einfach denselben Wert zurückgeben).
Negative Indizes
Negative Indizes zählen rückwärts vom Ende des string. -1 bezieht sich auf das letzte Zeichen, -2 auf das vorletzte und so weiter.
Ein nützliches Muster: my_string[-n:] liefert immer die letzten n Zeichen, unabhängig davon, wie lang der string ist.
Der Step-Parameter
Das dritte Slice-Argument ist der step. Er steuert, um wie viele Positionen Python nach jedem ausgewählten Zeichen vorwärts springt.
Einen String umkehren
Setzen Sie den step auf -1, um von rechts nach links zu iterieren. Dies ist der idiomatische Weg, einen string in Python umzukehren:
Sie können einen negativen step mit Start- und Stopp-Indizes kombinieren. Beachten Sie: Wenn der step negativ ist, muss start größer als stop sein.
my_string = "Hello, World!"
print(my_string[10:2:-1]) # 'lroW ,ol' — from index 10 down to (not including) index 2Weitere Techniken, einschließlich reversed() und ''.join(), finden Sie im Kapitel Einen String umkehren.
Start, Stop und Step kombinieren
Alle drei Teile arbeiten zusammen. Stellen Sie sich den Slice als eine for-Schleife vor, die bei start beginnt, vor stop aufhört und um step erhöht wird.
Indizes außerhalb des Bereichs
Anders als bei der direkten Indizierung (die bei einem Index außerhalb des Bereichs einen IndexError auslöst) behandelt Slicing Werte außerhalb des Bereichs problemlos, indem es sie an die string-Grenzen anpasst.
my_string = "Hello, World!"
# Stop index beyond the string length — no error
print(my_string[7:100]) # 'World!'
# Start index beyond the string length — returns empty string
print(my_string[50:60]) # ''
# Direct index access would raise IndexError:
# print(my_string[100]) # IndexError: string index out of rangeDies macht Slicing sicher für Muster wie „gib mir bis zu N Zeichen", ohne vorher len() prüfen zu müssen.
Praktische Beispiele
Dateiendung extrahieren
filename = "report.pdf"
extension = filename[-3:]
print(extension) # 'pdf'Die Domain aus einer E-Mail-Adresse extrahieren
email = "[email protected]"
at_index = email.index("@")
domain = email[at_index + 1:]
print(domain) # 'example.com'Einen langen string mit Auslassungspunkten abschneiden
def truncate(text, max_length):
if len(text) <= max_length:
return text
return text[:max_length - 3] + "..."
print(truncate("Hello, World!", 8)) # 'Hello...'
print(truncate("Hi", 8)) # 'Hi'Prüfen, ob ein string ein Palindrom ist
word = "racecar"
is_palindrome = word == word[::-1]
print(is_palindrome) # TrueKurzübersicht
| Ausdruck | Bedeutung |
|---|---|
s[a:b] | Zeichen von Index a bis (nicht einschließlich) b |
s[:b] | Vom Anfang bis (nicht einschließlich) b |
s[a:] | Von Index a bis zum Ende |
s[:] | Vollständige Kopie |
s[a:b:n] | Jedes n-te Zeichen von a bis b |
s[::-1] | Umgekehrter string |
s[-n:] | Letzte n Zeichen |
s[:-n] | Alles außer den letzten n Zeichen |
Was Sie als Nächstes lesen sollten
- Python Strings — string-Erstellung, Indizierung und Unveränderlichkeit
- String Methods —
upper(),strip(),split(),replace()und mehr - Modify Strings — Techniken zur Transformation von string-Inhalten
- Concatenate Strings — Strings mit
+undjoin()verbinden - Escape Characters —
\n,\t,\\und andere Sondersequenzen - Format Strings — Werte mit f-Strings und
.format()in Strings einbetten