W3docs

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  ← negative

Die 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.

python— editable, runs on the server

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.

python— editable, runs on the server

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.

python— editable, runs on the server

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.

python— editable, runs on the server

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:

python— editable, runs on the server

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 2

Weitere 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.

python— editable, runs on the server
python— editable, runs on the server

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 range

Dies 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)  # True

Kurzübersicht

AusdruckBedeutung
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

Übungen

Übung
Was gibt der Slice `s[2:5]` für den string `'Python'` zurück?
Was gibt der Slice `s[2:5]` für den string `'Python'` zurück?
Was this page helpful?