Python String-Manipulation

PythonBeginner
Jetzt üben

Einführung

In diesem Lab werden Sie die grundlegenden Techniken zur Manipulation von Strings in Python erkunden. Strings sind einer der häufigsten Datentypen, und zu wissen, wie man effektiv mit ihnen umgeht, ist eine entscheidende Fähigkeit für jeden Python-Programmierer. Wir werden alles behandeln, von grundlegenden Definitionen, der Verwendung von Sonderzeichen und der Erstellung von mehrzeiligen Strings bis hin zu fortgeschritteneren Operationen wie dem Zugriff auf Teilstrings, der Überprüfung auf Inhalte, der Änderung der Groß-/Kleinschreibung, dem Suchen, Aufteilen und Formatieren von Text. Am Ende dieses Labs werden Sie eine solide Grundlage für die Verarbeitung von Textdaten in Ihren Python-Programmen haben.

Escape-Zeichen und mehrzeilige Strings

In diesem Schritt lernen Sie, wie Sie Sonderzeichen innerhalb von Strings behandeln, Strings erstellen, die diese Sonderzeichen ignorieren, und Strings definieren, die sich über mehrere Zeilen erstrecken.

Zuerst untersuchen wir die Escape-Zeichen (Escape Characters). Ein Escape-Zeichen ist ein umgekehrter Schrägstrich (\), gefolgt von einem Zeichen, das Sie einfügen möchten. Zum Beispiel steht \n für einen Zeilenumbruch (newline), und \' steht für ein einfaches Anführungszeichen (single quote).

Hinweis: Wenn Sie mit der Verwendung von WebIDE (ähnlich VS Code) nicht vertraut sind, lernen Sie dies zuerst in diesem Lab.

Öffnen Sie die Datei main.py im Dateiexplorer auf der linken Seite. Fügen Sie den folgenden Code hinzu:

## Escape-Zeichen: Verwenden Sie einen Backslash, um Sonderzeichen einzufügen
## \n = Zeilenumbruch, \' = einfaches Anführungszeichen
print("Hello there!\nHow are you?\nI\'m doing fine.")

Führen Sie nun das Skript aus, indem Sie ein Terminal öffnen und den folgenden Befehl ausführen. Sie können ein neues Terminal öffnen, indem Sie auf das +-Symbol im Terminal-Panel klicken.

python3 main.py

Sie sehen die Ausgabe mit korrekt eingefügten Zeilenumbrüchen und einem einfachen Anführungszeichen.

Hello there!
How are you?
I'm doing fine.

Als Nächstes betrachten wir Raw Strings (rohe Strings). Ein Raw String, dem ein r vorangestellt ist, ignoriert alle Escape-Zeichen und gibt jeden Backslash aus, der im String vorkommt. Dies ist besonders nützlich für reguläre Ausdrücke (regular expressions) oder Dateipfade (file paths).

Ersetzen Sie den Inhalt von main.py durch den folgenden Code:

## Raw String (r-Präfix): behandelt Backslashes als literale Zeichen
print(r"Hello there!\nHow are you?\nI\'m doing fine.")

Führen Sie das Skript erneut aus:

python3 main.py

Beachten Sie, wie \n und \' nun in der Ausgabe als literale Zeichen behandelt werden.

Hello there!\nHow are you?\nI\'m doing fine.

Schließlich können Sie mehrzeilige Strings (multiline strings) mit dreifachen Anführungszeichen (""" oder ''') erstellen. Dies ist eine bequeme Möglichkeit, Strings zu definieren, die sich über mehrere Zeilen erstrecken und dabei die Formatierung beibehalten.

Ersetzen Sie den Inhalt von main.py durch dieses Beispiel:

print(
"""Dear Alice,

Eve's cat has been arrested for catnapping,
cat burglary, and extortion.

Sincerely,
Bob"""
)

Führen Sie das Skript aus:

python3 main.py

Die Ausgabe ist eine formatierte, mehrzeilige Nachricht.

Dear Alice,

Eve's cat has been arrested for catnapping,
cat burglary, and extortion.

Sincerely,
Bob

Indexierung und Slicing von Strings

In diesem Schritt lernen Sie, wie Sie mithilfe von Indizierung (Indexing) und Slicing auf einzelne Zeichen zugreifen und Teilstrings (Substrings) extrahieren können.

Strings in Python sind Sequenzen, was bedeutet, dass Sie über einen Index auf ihre Teile zugreifen können. Die Indizierung beginnt bei 0 für das erste Zeichen.

H   e   l   l   o       w   o   r   l   d    !
0   1   2   3   4   5   6   7   8   9   10   11

Löschen Sie den Inhalt der Datei main.py und fügen Sie den folgenden Code hinzu, um einen String zu definieren:

spam = 'Hello world!'

Um auf das erste Zeichen ('H') zuzugreifen, verwenden Sie den Index 0. Um auf das fünfte Zeichen ('o') zuzugreifen, verwenden Sie den Index 4. Sie können auch negative Indizes verwenden, um vom Ende des Strings aus zu zählen; -1 bezieht sich auf das letzte Zeichen.

Fügen Sie diese print-Anweisungen zu main.py hinzu, um die Indizierung in Aktion zu sehen:

spam = 'Hello world!'

## String indexing: access characters by position (0-based)
print(spam[0])    ## Returns first character
print(spam[4])    ## Returns fifth character
print(spam[-1])   ## Returns last character

Führen Sie das Skript aus:

python3 main.py

Die Ausgabe zeigt die einzelnen Zeichen, auf die Sie zugegriffen haben.

H
o
!

Slicing ermöglicht es Ihnen, einen Teil eines Strings zu extrahieren, der als Teilstring (Substring) bezeichnet wird. Die Syntax lautet [start:end], welche Zeichen vom start-Index bis einschließlich, aber nicht einschließlich, des end-Index extrahiert.

Lassen Sie uns das Slicing üben. Ersetzen Sie den Inhalt von main.py durch den folgenden Code. Wir werden einige verschiedene Möglichkeiten erkunden, den String zu slicen.

spam = 'Hello world!'

## String slicing: extract substring using [start:end] syntax
print(spam[0:5])    ## Returns characters from index 0 to 4
print(spam[:5])     ## Omitting start index defaults to 0
print(spam[6:])     ## Omitting end index defaults to the end of the string
print(spam[::-1])   ## A step of -1 reverses the string

Führen Sie das Skript aus:

python3 main.py

Beobachten Sie die verschiedenen Teilstrings, die durch das Slicing erzeugt wurden.

Hello
Hello
world!
!dlrow olleH

String-Mitgliedschaft und Groß-/Kleinschreibungsmethoden

In diesem Schritt lernen Sie, wie Sie überprüfen können, ob ein Teilstring in einem String existiert, und wie Sie die Groß-/Kleinschreibung (Case) eines Strings ändern und validieren können.

Die Operatoren in und not in werden verwendet, um die Mitgliedschaft (Membership) eines Strings zu überprüfen. Sie geben einen booleschen Wert zurück: True oder False.

Löschen Sie die Datei main.py und fügen Sie den folgenden Code hinzu, um diese Operatoren zu testen. Beachten Sie, dass der Vergleich Groß- und Kleinschreibung-sensitiv ist.

## The 'in' and 'not in' operators
print('Hello' in 'Hello World')
print('HELLO' in 'Hello World')
print('cats' not in 'cats and dogs')

Führen Sie das Skript aus, um die booleschen Ergebnisse zu sehen:

python3 main.py
True
False
False

Python bietet auch verschiedene Methoden, um die Groß-/Kleinschreibung eines Strings zu ändern. Die Methoden upper(), lower() und title() geben jeweils einen neuen String in Großbuchstaben (all uppercase), Kleinbuchstaben (all lowercase) oder Titel-Schreibweise (title case, wobei jedes Wort großgeschrieben wird) zurück.

Ersetzen Sie den Inhalt von main.py durch Folgendes:

greet = 'Hello world!'
print(greet.upper())
print(greet.lower())
print(greet.title())

Führen Sie das Skript aus:

python3 main.py

Sie werden die transformierten Strings sehen.

HELLO WORLD!
hello world!
Hello World!

Um zu überprüfen, ob ein String bereits in einer bestimmten Schreibweise vorliegt, können Sie die Methoden isupper() und islower() verwenden. Diese Methoden geben True zurück, wenn alle Zeichen mit Groß-/Kleinschreibung im String die angegebene Schreibweise aufweisen und mindestens ein solches Zeichen vorhanden ist.

Ersetzen Sie den Inhalt von main.py durch diese Beispiele:

spam = 'Hello world!'
print(spam.islower())

print('HELLO'.isupper())

## This is true because non-letter characters are ignored
print('abc12345'.islower())

## This is false because there are no cased characters
print('12345'.islower())

Führen Sie das Skript aus, um die Schreibweise jedes Strings zu überprüfen.

python3 main.py
False
True
True
False

Suchen und Aufteilen von Strings

In diesem Schritt lernen Sie, wie Sie überprüfen können, ob ein String mit einem bestimmten Teilstring beginnt oder endet, wie Sie eine Liste von Strings zu einem einzigen String zusammenfügen (join) und wie Sie einen String in eine Liste von Teilstrings aufteilen (split).

Die Methoden startswith() und endswith() sind nützlich, um den Anfang oder das Ende eines Strings zu überprüfen. Sie geben True oder False zurück.

Löschen Sie main.py und fügen Sie den folgenden Code hinzu:

print('Hello world!'.startswith('Hello'))
print('Hello world!'.endswith('world!'))
print('abc123'.startswith('abcdef'))

Führen Sie das Skript aus, um die Ergebnisse zu sehen:

python3 main.py
True
True
False

Die Methode join() wird auf einem Trenn-String (separator string) aufgerufen und nimmt ein iterierbares Objekt (wie eine Liste) als Argument entgegen. Sie kombiniert die Elemente des iterierbaren Objekts zu einem einzigen String, wobei der Trenner zwischen jedem Element platziert wird.

Ersetzen Sie den Inhalt von main.py durch diese Beispiele, um zu sehen, wie join() funktioniert:

## Join with a comma and space separator
print(', '.join(['cats', 'rats', 'bats']))

## Join with a space separator
print(' '.join(['My', 'name', 'is', 'Simon']))

Führen Sie das Skript aus:

python3 main.py
cats, rats, bats
My name is Simon

Die Methode split() macht das Gegenteil von join(). Sie wird auf einem String aufgerufen und zerlegt ihn in eine Liste von Teilstrings. Standardmäßig wird bei Leerzeichen (whitespace) geteilt, aber Sie können einen bestimmten Trennwert (delimiter) angeben.

Ersetzen Sie den Inhalt von main.py durch den folgenden Code, um das Aufteilen von Strings zu üben:

## Split by default whitespace
print('My name is Simon'.split())

## Split by a specific delimiter 'ABC'
print('MyABCnameABCisABCSimon'.split('ABC'))

Führen Sie das Skript aus, um die resultierenden Listen zu sehen:

python3 main.py
['My', 'name', 'is', 'Simon']
['My', 'name', 'is', 'Simon']

Strings ausrichten und bereinigen

In diesem Schritt lernen Sie, wie Sie die Ausrichtung von Text formatieren und wie Sie unerwünschte Zeichen, wie z.B. Leerzeichen, vom Anfang oder Ende eines Strings entfernen können.

Python bietet Methoden zur Textausrichtung innerhalb einer gegebenen Breite: rjust() (rechtsbündig), ljust() (linksbündig) und center(). Diese Methoden geben einen neuen, aufgefüllten String zurück.

Löschen Sie die Datei main.py und fügen Sie den folgenden Code hinzu:

print('Hello'.rjust(10))
print('Hello'.ljust(10))
print('Hello'.center(20))

Führen Sie das Skript aus, um den ausgerichteten Text zu sehen. Die einfachen Anführungszeichen in der Ausgabe helfen, die Auffüllung (Padding) zu visualisieren.

python3 main.py
     Hello
Hello
       Hello

Sie können auch ein optionales zweites Argument angeben, um ein Füllzeichen (fill character) außer einem Leerzeichen festzulegen. Ersetzen Sie den Inhalt von main.py durch Folgendes:

print('Hello'.rjust(20, '*'))
print('Hello'.center(20, '='))

Führen Sie das Skript erneut aus:

python3 main.py
***************Hello
=======Hello========

Um Strings zu bereinigen, können Sie die Methoden strip(), rstrip() und lstrip() verwenden. Diese dienen dazu, Zeichen von den Enden eines Strings zu entfernen. Standardmäßig entfernen sie Whitespace-Zeichen (Leerzeichen, Tabs, Zeilenumbrüche).

Ersetzen Sie den Inhalt von main.py durch dieses Beispiel:

spam = '    Hello World     '
print(spam.strip())   ## Entfernt von beiden Enden
print(spam.lstrip())  ## Entfernt von der linken Seite
print(spam.rstrip())  ## Entfernt von der rechten Seite

Führen Sie das Skript aus, um die bereinigten Strings zu sehen:

python3 main.py
Hello World
Hello World
    Hello World

Sie können diesen Methoden auch ein String-Argument übergeben, um anzugeben, welche Zeichen entfernt werden sollen. Die Methode entfernt alle Zeichen aus dem Argument, die sich an den Enden des Strings befinden.

Ersetzen Sie den Inhalt von main.py ein letztes Mal:

spam = 'SpamSpamBaconSpamEggsSpamSpam'
## Entfernt alle Zeichen 'S', 'p', 'a', 'm' von den Enden
print(spam.strip('ampS'))

Führen Sie das Skript aus:

python3 main.py

Die Ausgabe zeigt, dass die äußeren "Spam"-Teile entfernt wurden, sodass der zentrale Teil des Strings übrig bleibt.

BaconSpamEggs

Zusammenfassung

In diesem Lab haben Sie die wesentlichen Techniken zur String-Manipulation in Python gemeistert. Sie haben gelernt, wie man Escape-Zeichen verwendet und mehrzeilige Strings für eine bessere Textdarstellung erstellt. Sie haben das Zugreifen auf Teile eines Strings mittels Indexierung (indexing) und Slicing geübt. Außerdem haben Sie leistungsstarke String-Methoden erkundet, um die Mitgliedschaft zu prüfen (in, not in), die Groß-/Kleinschreibung zu ändern (upper(), lower()), die Groß-/Kleinschreibung zu validieren (isupper(), islower()), zu suchen (startswith(), endswith()), Strings zusammenzufügen und aufzuteilen (joining and splitting) und schließlich Text zu formatieren und zu bereinigen (rjust(), strip()). Diese Fähigkeiten sind grundlegend für jede Aufgabe, die Textverarbeitung in Python beinhaltet.