Einführung
In diesem Lab sammeln Sie praktische Erfahrungen im Umgang mit Strings in Python, einem fundamentalen Datentyp. Sie beginnen mit dem Verständnis der Grundlagen von Strings, einschließlich Erstellung, Unveränderlichkeit (Immutability) und dem Zugriff auf einzelne Zeichen mittels positiver und negativer Indizierung.
Aufbauend auf dieser Grundlage lernen Sie, wie man Teilstrings (Substrings) mithilfe von Slicing extrahiert, verschiedene String-Operatoren und Escape-Zeichen für Manipulation und spezielle Formatierung verwendet und verschiedene Methoden zur Formatierung von Strings kennenlernen. Abschließend befassen Sie sich mit gängigen String-Methoden zur Durchführung von Operationen wie Suchen, Ersetzen und Modifizieren des String-Inhalts.
Grundlagen und Indizierung von Strings verstehen
In diesem Schritt lernen Sie die fundamentalen Konzepte von Strings in Python kennen, einschließlich ihrer Erstellung und des Zugriffs auf einzelne Zeichen mittels Indizierung. Strings sind Zeichensequenzen und gehören zu den gängigsten Datentypen. Sie können Strings mithilfe von einfachen Anführungszeichen ('...') oder doppelten Anführungszeichen ("...") erstellen.
Ein Schlüsselmerkmal von Python-Strings ist, dass sie unveränderlich (immutable) sind, was bedeutet, dass ihr Inhalt nach ihrer Erstellung nicht mehr geändert werden kann. Jede Operation, die eine Änderung zu bewirken scheint, erstellt tatsächlich einen neuen String.
Lassen Sie uns dies untersuchen. Öffnen Sie im WebIDE die Datei string_basics.py aus dem Verzeichnis ~/project im Dateiexplorer auf der linken Seite. Fügen Sie den folgenden Code hinzu:
## string_basics.py
## Strings sind unveränderlich. Die Zuweisung eines neuen Strings zu einer Variablen
## erzeugt ein neues String-Objekt mit einer neuen Speicheradresse.
a = "hello"
print(f"Value: {a}, ID: {id(a)}")
a = "hi"
print(f"Value: {a}, ID: {id(a)}")
Um das Skript auszuführen, öffnen Sie ein Terminal im WebIDE (Terminal -> New Terminal) und führen Sie den folgenden Befehl aus:
python ~/project/string_basics.py
Sie sehen eine Ausgabe, die dieser ähnelt, wobei die ID-Werte unterschiedlich sind, was bestätigt, dass ein neues String-Objekt erstellt wurde.
Value: hello, ID: <placeholder>
Value: hi, ID: <placeholder>
Nun erkunden wir die String-Indizierung. Sie können auf einzelne Zeichen über ihren Index (Position) zugreifen. In Python beginnt die Indizierung für das erste Zeichen bei 0.
Ändern Sie die Datei string_basics.py, um die positive Indizierung einzuschließen:
## string_basics.py
a = "Hello"
## Positive Indizierung (vom Anfang)
print("Positive Indexing:")
print(a[0])
print(a[1])
print(a[2])
print(a[3])
print(a[4])
## Der Zugriff auf einen nicht existierenden Index führt zu einem IndexError.
## print(a[5])
Speichern Sie die Datei und führen Sie sie erneut aus:
python ~/project/string_basics.py
Positive Indexing:
H
e
l
l
o
Python unterstützt auch die negative Indizierung, die auf Zeichen vom Ende des Strings zugreift. Das letzte Zeichen hat den Index -1, das vorletzte -2 und so weiter.
Fügen Sie Beispiele für die negative Indizierung zu string_basics.py hinzu:
## string_basics.py
a = "Hello"
## Positive Indizierung (vom Anfang)
print("Positive Indexing:")
print(a[0])
print(a[1])
print(a[2])
print(a[3])
print(a[4])
## Negative Indizierung (vom Ende)
print("\nNegative Indexing:")
print(a[-5])
print(a[-4])
print(a[-3])
print(a[-2])
print(a[-1])
## Da Strings unveränderlich sind, können Sie ein Zeichen nicht ändern.
## Die folgende Zeile würde einen TypeError verursachen: 'str' object does not support item assignment
## a[0] = "J"
Speichern Sie die Datei und führen Sie sie ein letztes Mal für diesen Schritt aus:
python ~/project/string_basics.py
Positive Indexing:
H
e
l
l
o
Negative Indexing:
H
e
l
l
o
Strings slicen (Teilstrings extrahieren)
In diesem Schritt lernen Sie, wie man Teilstrings (Substrings) mithilfe des Slicings aus einem String extrahiert. Während die Indizierung ein einzelnes Zeichen liefert, liefert das Slicing eine Sequenz von Zeichen.
Die grundlegende Syntax für das Slicing lautet string[start:end]. Dies extrahiert den Teil des Strings vom start-Index bis einschließlich, aber nicht einschließlich, des end-Index.
Öffnen Sie die Datei string_slicing.py aus dem Verzeichnis ~/project. Fügen Sie den folgenden Code hinzu, um das grundlegende Slicing zu demonstrieren:
## string_slicing.py
a = "Hello World"
## Slice von Index 0 bis (aber nicht einschließlich) Index 5
print(a[0:5])
## Slice von Index 6 bis zum Ende des Strings
print(a[6:])
## Slice vom Anfang bis (aber nicht einschließlich) Index 5
print(a[:5])
## Verwendung negativer Indizes für das Slicing
print(a[-5:-2])
## Eine Kopie des gesamten Strings erhalten
print(a[:])
Speichern Sie die Datei und führen Sie sie im Terminal aus:
python ~/project/string_slicing.py
Hello
World
Hello
Wor
Hello World
Slicing kann auch einen dritten Parameter, step (Schrittweite), mit der Syntax string[start:end:step] verwenden. Der Wert von step bestimmt das Intervall zwischen den Zeichen im Slice.
Ändern Sie string_slicing.py, um Beispiele mit einer Schrittweite einzuschließen:
## string_slicing.py
a = "Hello World"
## ... (vorheriger Code) ...
b = "0123456789"
## Jedes zweite Zeichen vom Anfang bis zum Ende holen
print(b[::2])
## Zeichen von Index 1 bis 7 mit einer Schrittweite von 3 holen
print(b[1:7:3])
## Eine negative Schrittweite kehrt die Richtung um. Dies kehrt den gesamten String um.
print(b[::-1])
## Rückwärts von Index 7 bis (aber nicht einschließlich) Index 2
print(b[7:2:-1])
Speichern Sie die Datei und führen Sie sie erneut aus:
python ~/project/string_slicing.py
Hello
World
Hello
Wor
Hello World
02468
14
9876543210
76543
Slicing ist nachsichtig und behandelt automatisch Indizes, die außerhalb des gültigen Bereichs liegen (out of bounds), was Fehler verhindert.
Fügen Sie diese letzten Zeilen zu string_slicing.py hinzu, um dieses Verhalten zu sehen:
## string_slicing.py
a = "Hello World"
## ... (vorheriger Code) ...
b = "0123456789"
## ... (vorheriger Code) ...
## Slicing mit außerhalb des Bereichs liegenden Indizes
c = "Python"
## Der Endindex ist größer als die String-Länge, aber es funktioniert problemlos.
print(c[2:100])
## Der Startindex liegt vor dem Anfang, aber es funktioniert problemlos.
print(c[-100:4])
Speichern und führen Sie das Skript aus:
python ~/project/string_slicing.py
Hello
World
Hello
Wor
Hello World
02468
14
9876543210
76543
thon
Pyth
String-Operatoren und Escape-Zeichen verwenden
In diesem Schritt lernen Sie gängige Operatoren kennen, die mit Strings verwendet werden, und wie man Escape-Zeichen (Fluchtzeichen) verwendet, um Sonderzeichen darzustellen.
Python bietet verschiedene Operatoren für die String-Manipulation. Die Operatoren in und not in prüfen auf Teilstrings, + verkettet (konkateniert) Strings und * wiederholt einen String.
Öffnen Sie die Datei string_operators.py im WebIDE und fügen Sie den folgenden Code hinzu:
## string_operators.py
## Der 'in'-Operator prüft, ob ein Teilstring in einem String existiert
print('e' in 'Hello')
print('x' in 'Hello')
## Der 'not in'-Operator ist das Gegenteil von 'in'
print('e' not in 'Hello')
print('x' not in 'Hello')
## Konkatenation (+) verbindet zwei Strings
print('Hello' + ' ' + 'World')
## Wiederholung (*) wiederholt einen String eine bestimmte Anzahl von Malen
print('=' * 20)
print('Go! ' * 3)
Speichern Sie die Datei und führen Sie sie aus:
python ~/project/string_operators.py
True
False
False
True
Hello World
====================
Go! Go! Go!
Als Nächstes betrachten wir die Escape-Zeichen. Dies sind spezielle Sequenzen, die mit einem Backslash (\) beginnen und nicht druckbare oder spezielle Zeichen darstellen.
Öffnen Sie die Datei escape_characters.py und fügen Sie den folgenden Code hinzu:
## escape_characters.py
## Verwenden Sie \' oder \" um Anführungszeichen in einem String einzufügen
print('It\'s a beautiful day.')
print("He said, \"Python is fun!\"")
## \n erzeugt eine neue Zeile
print("First line\nSecond line")
## \t erzeugt einen horizontalen Tabulator
print("Column1\tColumn2\tColumn3")
## \\ stellt einen literalen Backslash dar
print("This is a backslash: \\")
## Ein Raw String, dem ein 'r' vorangestellt ist, behandelt Backslashes als literale Zeichen.
## Dies ist sehr nützlich für Dateipfade und reguläre Ausdrücke (Regular Expressions).
print("A normal string: C:\\Users\\new_folder")
print(r"A raw string: C:\Users\new_folder")
Speichern Sie die Datei und führen Sie sie aus:
python ~/project/escape_characters.py
It's a beautiful day.
He said, "Python is fun!"
First line
Second line
Column1 Column2 Column3
This is a backslash: \
A normal string: C:\Users\new_folder
A raw string: C:\Users\new_folder
Strings formatieren
In diesem Schritt lernen Sie moderne und effektive Wege kennen, Strings in Python zu formatieren. Dies ist entscheidend für die Erstellung dynamischer und lesbarer Ausgaben, indem Variablen und Ausdrücke in Strings eingebettet werden.
Obwohl Sie den Operator + zur Konkatenation von Strings verwenden können, wird dies unhandlich, wenn man Strings mit Nicht-String-Typen wie Zahlen mischt, da man diese manuell mit str() konvertieren muss.
Python bietet bessere Lösungen. Die gebräuchlichste und empfohlene Methode ist die Verwendung von f-Strings (formatierte String-Literale).
f-String-Formatierung
f-Strings, eingeführt in Python 3.6, bieten eine prägnante und lesbare Möglichkeit, Ausdrücke in Strings einzubetten. Sie stellen dem String einfach ein f oder F voran und schreiben Ausdrücke in geschweifte Klammern {}.
Öffnen Sie die Datei string_formatting.py und fügen Sie den folgenden Code hinzu:
## string_formatting.py
name = "Alice"
age = 30
## Verwendung eines f-Strings zur Einbettung von Variablen
greeting = f"Hello, my name is {name} and I am {age} years old."
print(greeting)
## Sie können auch direkt Ausdrücke einbetten
print(f"In 5 years, I will be {age + 5} years old.")
Speichern und führen Sie das Skript aus:
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
Format-Spezifizierer (Format Specifiers)
f-Strings erlauben es Ihnen auch, die Formatierung der eingebetteten Werte mithilfe von Format-Spezifizierern zu steuern, die in den Klammern auf einen Doppelpunkt (:) folgen.
Fügen Sie die folgenden Beispiele zu string_formatting.py hinzu:
## string_formatting.py
## ... (vorheriger Code) ...
pi = 3.14159265
## Eine Gleitkommazahl (float) auf 2 Dezimalstellen formatieren
print(f"The value of pi is approximately {pi:.2f}")
## Eine Zahl mit führenden Nullen auf eine Breite von 8 auffüllen
order_id = 45
print(f"Order ID: {order_id:08}")
## Text innerhalb eines gegebenen Raumes ausrichten (Breite von 10)
## < (linksbündig), ^ (zentriert), > (rechtsbündig)
text = "Python"
print(f"'{text:<10}'")
print(f"'{text:^10}'")
print(f"'{text:>10}'")
## Komma als Tausendertrennzeichen hinzufügen
large_number = 1234567890
print(f"A large number: {large_number:,}")
Speichern Sie die Datei und führen Sie sie erneut aus:
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
The value of pi is approximately 3.14
Order ID: 00000045
'Python '
' Python '
' Python'
A large number: 1,234,567,890
Die Methode str.format()
Vor den f-Strings war die Methode str.format() die bevorzugte Methode zur String-Formatierung. Sie funktioniert, indem Platzhalterklammern {} in den String gesetzt und dann Werte an die format()-Methode übergeben werden.
Fügen Sie dieses Beispiel am Ende von string_formatting.py hinzu:
## string_formatting.py
## ... (vorheriger Code) ...
## Verwendung der str.format()-Methode
item = "moon"
cost = 99.95
statement = "The {} costs {:.2f} dollars.".format(item, cost)
print(statement)
Speichern Sie die Datei und führen Sie sie aus, um die Ausgabe zu sehen:
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
The value of pi is approximately 3.14
Order ID: 00000045
'Python '
' Python '
' Python'
A large number: 1,234,567,890
The moon costs 99.95 dollars.
Obwohl str.format() immer noch nützlich ist, sind f-Strings im Allgemeinen lesbarer und schneller.
Häufige String-Methoden erkunden
In diesem letzten Schritt erkunden Sie einige der häufigsten und nützlichsten eingebauten Methoden für String-Objekte. Diese Methoden führen verschiedene Operationen durch, wie z. B. das Ändern der Groß-/Kleinschreibung, das Suchen und Ersetzen von Text sowie das Aufteilen von Strings in Listen.
Denken Sie daran, dass Strings unveränderlich (immutable) sind. Diese Methoden geben daher immer einen neuen String zurück und modifizieren nicht den ursprünglichen.
Öffnen Sie die Datei string_methods.py und fügen Sie den folgenden Code hinzu, um diese Methoden in Aktion zu sehen:
## string_methods.py
## Methoden zur Umwandlung der Groß-/Kleinschreibung (Case conversion methods)
s1 = "Hello, World!"
print(f"Original: '{s1}'")
print(f"Großbuchstaben: '{s1.upper()}'")
print(f"Kleinbuchstaben: '{s1.lower()}'")
print(f"Titel-Format: '{s1.title()}'")
print("-" * 20)
## Suchen und Ersetzen (Searching and replacing)
s2 = "The quick brown fox jumps over the lazy dog."
print(f"Original: '{s2}'")
## Prüfen, ob ein String mit einem Teilstring beginnt oder endet
print(f"Beginnt mit 'The': {s2.startswith('The')}")
print(f"Endet mit 'dog.': {s2.endswith('dog.')}")
## Index eines Teilstrings finden (-1, falls nicht gefunden)
print(f"Index von 'fox': {s2.find('fox')}")
## Einen Teilstring durch einen anderen ersetzen
s3 = s2.replace("brown", "red")
print(f"Nach Ersetzung: '{s3}'")
print("-" * 20)
## Whitespace entfernen (Stripping whitespace)
s4 = " some whitespace "
print(f"Original: '{s4}'")
## strip() entfernt von beiden Enden, lstrip() von links, rstrip() von rechts
print(f"Bereinigt: '{s4.strip()}'")
print("-" * 20)
## Aufteilen und Verbinden (Splitting and joining)
s5 = "one,two,three,four"
print(f"Original: '{s5}'")
## Den String basierend auf einem Trennzeichen in eine Liste von Teilstrings aufteilen
parts = s5.split(',')
print(f"Aufgeteilte Liste: {parts}")
## Die Elemente einer Liste mit einem Trennzeichen zu einem einzigen String verbinden
s6 = " ".join(parts)
print(f"Verbundenes String: '{s6}'")
Speichern Sie die Datei und führen Sie sie im Terminal aus:
python ~/project/string_methods.py
Ihre Ausgabe sollte wie folgt aussehen:
Original: 'Hello, World!'
Upper case: 'HELLO, WORLD!'
Lower case: 'hello, world!'
Title case: 'Hello, World!'
--------------------
Original: 'The quick brown fox jumps over the lazy dog.'
Starts with 'The': True
Ends with 'dog.': True
Index of 'fox': 16
After replace: 'The quick red fox jumps over the lazy dog.'
--------------------
Original: ' some whitespace '
Stripped: 'some whitespace'
--------------------
Original: 'one,two,three,four'
Split list: ['one', 'two', 'three', 'four']
Joined string: 'one two three four'
Dies sind nur einige der vielen String-Methoden, die in Python verfügbar sind. Sie bieten leistungsstarke Werkzeuge zur Verarbeitung und Manipulation von Textdaten.
Zusammenfassung
In diesem Lab haben Sie die grundlegenden Konzepte der Arbeit mit Strings in Python kennengelernt. Sie begannen mit den Grundlagen, verstanden, wie man Strings erstellt, und erkannten deren Unveränderlichkeit (immutable nature). Sie übten den Zugriff auf einzelne Zeichen sowohl mit positiver als auch negativer Indizierung und das Extrahieren von Teilstrings (substrings) mithilfe des Slicing mit Start-, End- und Schrittparametern.
Anschließend haben Sie String-Operatoren für die Konkatenation (+) und Wiederholung (*) erkundet und gelernt, wie man Escape-Zeichen verwendet, um Sonderzeichen in Ihre Strings einzufügen. Sie beherrschten moderne String-Formatierungstechniken, wobei der Schwerpunkt auf der Leistungsfähigkeit und Lesbarkeit von f-Strings und deren Format-Spezifizierern lag, und lernten gleichzeitig die Methode str.format() kennen. Schließlich übten Sie die Verwendung gängiger String-Methoden wie upper(), lower(), replace(), strip(), split() und join(), um wesentliche Textmanipulationsaufgaben durchzuführen.



