Mit Zeichenketten in Python arbeiten
AnfängerEinheit 5 von 10 in Kurs: Python-Programmierung – Schleifen, Funktionen, Listen und Dateien
Was du lernst
- Schreibe Zeichenkettenliterale, ermittle die Länge von Zeichenketten und kombiniere sie. Greife mit Indizes und Ausschnitten auf jedes Zeichen und jeden Abschnitt eines Textes zu.
- Zeichenkettenliterale schreiben und Zeichenketten verknüpfenErstelle Zeichenketten mit Anführungszeichen, Escape-Sequenzen und dreifachen Anführungszeichen, ermittle ihre Länge mit
len()und kombiniere sie mit+und*. - Einzelne Zeichen über ihren Index auswählenLies mit positiven und negativen Indizes beliebige Zeichen einer Zeichenkette und vermeide Um-eins-Fehler und Fehler bei leeren Zeichenketten, die einen
IndexErrorauslösen. - Ausschnitte einer Zeichenkette auswählenWähle Teilzeichenketten mit
[start:stop]und[start:stop:step]aus, verwende weggelassene und negative Positionen und sage genau voraus, welche Zeichen ein Ausschnitt enthält.
- Zeichenkettenliterale schreiben und Zeichenketten verknüpfen
- Durchlaufe eine Zeichenkette, um zu zählen, zu suchen und Text zu erstellen. Berücksichtige dabei, dass die Zeichen einer Zeichenkette nie direkt verändert werden können.
- Die Zeichen einer Zeichenkette durchlaufenGehe mit
for- undwhile-Schleifen jedes Zeichen durch, verwende Positionen, wenn sie wichtig sind, und wende Muster zum Zählen, Suchen und Ansammeln auf Text an. - Neue Zeichenketten erstellen, statt vorhandene zu verändernErkläre, was es bedeutet, dass Zeichenketten unveränderlich sind, und erzeuge veränderten Text durch Ausschnitte, Verkettung und erneute Zuweisung.
- Die Zeichen einer Zeichenkette durchlaufen
- Rufe Zeichenkettenmethoden auf, um Groß- und Kleinschreibung zu ändern und Text zu bereinigen, Teilzeichenketten zu finden und zu zählen sowie den Inhalt einer Zeichenkette vor ihrer Verwendung zu prüfen.
- Groß- und Kleinschreibung ändern und Text mit Methoden bereinigenRufe Methoden mit Punktnotation auf, um Groß- und Kleinschreibung zu ändern, unerwünschte Zeichen zu entfernen, Text zu ersetzen und Zeichenketten aufzufüllen. Verknüpfe mehrere Methoden miteinander.
- Text innerhalb einer Zeichenkette suchenPrüfe, ob eine Teilzeichenkette vorkommt, finde ihren Anfang, zähle ihre Vorkommen und nutze gefundene Positionen, um Text auszuschneiden.
- Zeichenketten prüfen und vergleichenPrüfe, womit eine Zeichenkette beginnt, womit sie endet oder woraus sie besteht, validiere Eingaben vor der Umwandlung und sage voraus, wie Python Zeichenketten vergleicht und sortiert.
- Groß- und Kleinschreibung ändern und Text mit Methoden bereinigen
- Zerlege eine Textzeile mit
split()in Wörter oder Felder und füge Teile mitjoin()wieder zu einer Zeichenkette zusammen.- Eine Zeichenkette in eine Liste von Teilen zerlegenVerwende
split()mit und ohne Trennzeichen, begrenze die Anzahl der Aufteilungen und wandle die Teile einer Zeile in die Werte um, die ein Programm braucht. - Zeichenketten mit einem Trennzeichen zusammenfügenFüge mit
join()viele Zeichenketten zu einer zusammen, wähle das Trennzeichen, wandle andere Elemente zuerst um und kombinieresplit()mitjoin(), um Text umzuformen.
- Eine Zeichenkette in eine Liste von Teilen zerlegen
- Erstelle übersichtliche Ausgaben, indem du mit f-Strings Werte in Text einfügst, Zahlen, Datums- und Zeitangaben lesbar formatierst und Ergebnisse in Spalten ausrichtest.
- Werte mit f-Strings in Text einsetzenSchreibe f-Strings, die die Werte von Variablen und Ausdrücken in Text einsetzen, und erkenne die älteren Schreibweisen mit
format()und%in vorhandenem Code. - Zahlen, Datums- und Zeitangaben lesbar formatierenErgänze Formatangaben, um Nachkommastellen, Rundung, Tausendertrennzeichen, Prozentangaben, Vorzeichen und das Auffüllen mit Nullen zu steuern, und erstelle Datums- und Zeitangaben im US-Format.
- Ausgaben in Spalten ausrichtenLege Feldbreiten, Ausrichtung und Füllzeichen fest, kürze langen Text und kombiniere diese Möglichkeiten, um ausgerichtete Tabellen und Kassenbons auszugeben.
- Werte mit f-Strings in Text einsetzen
Zeichenketten in Python einfach erklärt
1Zeichenketten erstellen und ihre Teile auswählen
Text in einem Programm hat sowohl Inhalt als auch Positionen. Ein Name kann ein Leerzeichen enthalten, eine Nachricht einen Zeilenumbruch und ein Code kann seine ersten beiden Buchstaben getrennt von seiner Zahl speichern. Du kannst diese Zeichenketten erstellen, kombinieren und genau die Zeichen auswählen, die du brauchst. Unterscheide zunächst, wie Text in Python geschrieben wird und welchen Wert er enthält. Nutze dann eine Darstellung der Positionen, um Indizes und Ausschnitte vorhersehbar zu machen.
1.1 Zeichenkettenliterale schreiben und Zeichenketten verknüpfen
Eine Zeichenkette ist eine Folge von Zeichen mit dem Datentyp str. Sie kann einen Namen, einen Satz, einen Code oder auch gar keine Zeichen enthalten. Python behält die Reihenfolge der Zeichen einschließlich Leerzeichen und Satzzeichen bei.
Schreibe den Wert zwischen passende Anführungszeichen
Einfache und doppelte Anführungszeichen erzeugen dieselbe Art von Wert: 'hello' und "hello" sind gleich. Die äußeren Anführungszeichen markieren die Grenzen; sie sind keine Zeichen des Werts. Wähle Anführungszeichen so, dass solche innerhalb des Textes gut lesbar bleiben:
message = "It's late"
reply = 'She said "yes"'
empty = ""
In 'It's late' schließt der Apostroph die Zeichenkette zu früh und verursacht einen SyntaxError. Doppelte Anführungszeichen lösen das Problem, oder du kannst 'It\'s late' schreiben. Verwende im Code gerade Anführungszeichen.
Speichere Zeilenumbrüche und umgekehrte Schrägstriche
Eine Escape-Sequenz beginnt mit einem umgekehrten Schrägstrich. Python liest \n als einen Zeilenumbruch, \t als einen Tabulator und \\ als einen umgekehrten Schrägstrich. Maskierte Anführungszeichen, \' und \", setzen Anführungszeichen in den Text.
text = "a\nb"
print(len(text)) # 3
print(text)
Der letzte Aufruf gibt a und b in getrennten Zeilen aus. Der Wert hat drei Zeichen: a, einen Zeilenumbruch und b. Escape-Sequenzen werden verarbeitet, wenn Python das Literal liest. Die Shell zeigt eine Darstellung mit Anführungszeichen und, wo nötig, Escape-Sequenzen; print() zeigt die Zeichen selbst. Beispielsweise wird "\x41" zu "A", sodass die Shell die ursprüngliche Escape-Sequenz nicht anzeigen muss.
Dreifache Anführungszeichen erlauben Literale über mehrere Zeilen. Jeder Zeilenumbruch darin wird zu einem Zeilenumbruchzeichen:
notice = """Door closed
Use side entrance"""
Eine rohe Zeichenkette hat ein r vor ihren Anführungszeichen. In r"C:\new" bleiben der umgekehrte Schrägstrich und n getrennt, sodass sich sechs Zeichen ergeben. In "C:\new" wird \n zu einem Zeilenumbruch, sodass sich fünf ergeben. Rohe Literale sind nützlich, wenn umgekehrte Schrägstriche zum Text gehören.
Ermittle die Länge von Text und kombiniere Text
len() zählt jedes Zeichen einschließlich Leerzeichen: len("Hi there!") ist 9 und len("") ist 0. Genauer zählt die Funktion Unicode-Codepunkte. len("café") ist 4, wenn é ein Codepunkt ist; len("👍🏽") ist 2, obwohl das Emoji wie ein Symbol aussieht.
Verwende +, um Zeichenketten zu verketten, und *, um eine Zeichenkette zu wiederholen:
first = "Ada"
last = "Lovelace"
full = first + " " + last # "Ada Lovelace"
rule = "-" * 10 # ten dashes
Die Verkettung fügt nichts von selbst ein. Ohne " " werden die Namen zu "AdaLovelace". Wird "ab" nullmal wiederholt, ergibt sich die leere Zeichenkette.
Entscheide, ob Ziffern Text oder Zahlen sind
Beide Operanden einer Zeichenkettenverkettung müssen Zeichenketten sein. "Age: " + 30 löst einen TypeError aus; "Age: " + str(30) ergibt "Age: 30". Umgekehrt gibt input() Text zurück: "3" + "4" ergibt "34". Um ihre Zahlenwerte zu addieren, wandle sie zuerst um: int("3") + int("4") ergibt 7.
Wichtige Erkenntnisse
- Eine Zeichenkette speichert eine geordnete Folge von Zeichen; ihre äußeren Anführungszeichen gehören zur Syntax.
ist ein Zeilenumbruchzeichen, während rohe Literale den umgekehrten Schrägstrich und den folgenden Buchstaben getrennt halten.len()zählt Codepunkte einschließlich Leerzeichen und Satzzeichen.+fügt Zeichenketten ohne zusätzliche Leerzeichen zusammen;*wiederholt eine Zeichenkette.- Wandle Text zum Rechnen in Zahlen und Zahlen zum Verketten in Text um.
1.2 Einzelne Zeichen über ihren Index auswählen
Ein Index wählt ein Zeichen anhand seiner Position aus. Python beginnt bei null zu zählen, daher ist die Position eines Zeichens um eins kleiner als sein Platz bei einer gewöhnlichen Zählung von links.
Zeichne die Positionen auf
Für word = "Python" hat jedes Zeichen einen nicht negativen und einen negativen Index:
| Zeichen | P | y | t | h | o | n |
|---|---|---|---|---|---|---|
| Vom Anfang | 0 | 1 | 2 | 3 | 4 | 5 |
| Vom Ende | -6 | -5 | -4 | -3 | -2 | -1 |
word = "Python"
print(word[0]) # P
print(word[1]) # y
print(word[-1]) # n
Die eckigen Klammern nach der Zeichenkette wählen das Zeichen aus. Das Ergebnis ist eine Zeichenkette der Länge eins: Python hat keinen eigenen Datentyp für einzelne Zeichen. Du kannst ausgewählte Zeichen zusammenfügen, daher ergibt word[0] + word[-1] den Wert "Pn".
Bei der Länge n reichen die gültigen Indizes von -n bis n - 1, wenn n > 0 gilt. Nicht negative Indizes zählen vom Anfang, negative vom Ende. Ein Index -k wählt dasselbe Zeichen wie n - k; in diesem Wort aus sechs Zeichen wählen sowohl -2 als auch 4 das Zeichen "o".
Unterscheide die Länge vom letzten Index
len(word) ist 6, aber word[6] löst einen IndexError aus: Es gibt kein siebtes Zeichen. Das letzte Zeichen ist word[len(word) - 1], oder einfach word[-1]. Ein zu weiter Zugriff von einem der beiden Enden aus schlägt fehl; auch word[-7] löst einen IndexError aus.
Ein Index muss eine ganze Zahl sein. word[1.0] löst einen TypeError aus, obwohl die Gleitkommazahl einen ganzzahligen Wert hat. Verwende //, wenn du eine Position in der Mitte berechnest:
word = "Pyt"
middle = len(word) // 2 # 1
print(word[middle]) # y
Der Operator / würde 1.5 erzeugen; damit lässt sich nicht über einen Index auf eine Zeichenkette zugreifen. Bei ungerader Länge wählt len(word) // 2 das Zeichen in der Mitte. Bei gerader Länge wählt der Ausdruck das rechte der beiden Zeichen in der Mitte: "Python"[3] ist "h".
Bilde Initialen aus den ersten Zeichen
first = "Grace"
last = "Hopper"
initials = first[0] + last[0]
print(initials) # GH
Jeder Name steuert sein Zeichen an Index 0 bei. Mit first[-1] würdest du "e" beitragen, den letzten Buchstaben. Diese Methode setzt voraus, dass jeder Name mindestens ein Zeichen hat.
Prüfe leere Eingaben vor dem Indexzugriff
Die leere Zeichenkette hat die Länge null und keinen gültigen Zeichenindex. ""[0] löst einen IndexError aus. Eine Längenprüfung kann verhindern, dass ein Programm ein Zeichen liest, das nicht existiert:
line = input("Comment: ")
if len(line) > 0 and line[0] == "#":
print("Comment line")
Python wertet and von links nach rechts aus. Ist die Längenprüfung falsch, überspringt Python line[0]. Würdest du die beiden Prüfungen umkehren, käme der unsichere Indexzugriff zuerst. Wenn du nur wissen musst, ob eine Zeile mit "#" beginnt, funktioniert line.startswith("#") auch bei leerer Eingabe und gibt False zurück.
Wichtige Erkenntnisse
- Index 0 wählt das erste Zeichen; Index -1 wählt das letzte.
- Der letzte nicht negative Index ist
len(text) - 1. - Ein Indexzugriff gibt eine einzeichenlange Zeichenkette zurück und löst für eine fehlende Position einen
IndexErroraus. - Verwende einen ganzzahligen Index und prüfe auf leere Eingaben, bevor du ein Zeichen auswählst.
1.3 Ausschnitte einer Zeichenkette auswählen
Ein Ausschnitt wählt eine zusammenhängende Folge von Zeichen aus und gibt sie als Zeichenkette zurück. Damit kannst du einen Anfangsteil auswählen, ein Ende entfernen oder Felder an festen Positionen trennen.
Der Start ist eingeschlossen, das Ende ausgeschlossen
Schreibe text[start:stop]. Mit s = "Monty Python" ergibt s[0:5] den Wert "Monty" und s[6:12] den Wert "Python". Das Leerzeichen steht an Index 5, daher beginnt der zweite Ausschnitt bei 6.
Stell dir die Zahlen eines Ausschnitts als Lücken vor. Lücke 0 liegt vor dem ersten Zeichen und Lücke 5 nach den ersten fünf. Nimmst du alles dazwischen, erhältst du fünf Zeichen. Für 0 <= start <= stop <= len(text) ist die Länge stop - start.
word = "Monty"
print(word[0:4]) # Mont
print(word[0:5]) # Monty
Die Endposition ist die erste ausgelassene Position. Addierst du eins zum gewünschten letzten Index, wird dieses letzte Zeichen eingeschlossen.
Lass eine Grenze weg
| Ausschnitt | Bedeutung | Ergebnis für s |
|---|---|---|
s[:5] | Anfang bis einschließlich Position 4 | "Monty" |
s[6:] | Position 6 bis zum Ende | "Python" |
s[:] | Ganze Zeichenkette | "Monty Python" |
s[-6:] | Letzte sechs Zeichen | "Python" |
s[:-1] | Alles außer dem letzten Zeichen | "Monty Pytho" |
An jeder Trennposition k gibt s[:k] + s[k:] den Wert s zurück. Die Ausschnitte treffen an derselben Lücke aufeinander, ohne dass ein Zeichen fehlt oder wiederholt wird.
Ausschnittsgrenzen außerhalb der Enden werden auf die Enden begrenzt. "cat"[1:100] ist "at"; "cat"[5:] ist "". Bei einem Ausschnitt in Vorwärtsrichtung ergibt ein Start bei oder nach der Endgrenze eine leere Zeichenkette, wie bei s[4:2]. Anders als bei einem Indexzugriff auf ein einzelnes Zeichen löst ein Ausschnitt außerhalb des gültigen Bereichs keinen IndexError aus.
Wähle eine Schrittweite
Die dritte Stelle in text[start:stop:step] legt fest, wie weit zwischen ausgewählten Positionen gegangen wird:
letters = "abcdefgh"
print(letters[::2]) # aceg
print(letters[1::2]) # bdfh
print(letters[::-1]) # hgfedcba
Eine negative Schrittweite führt rückwärts. Sind beide Grenzen weggelassen, beginnt [::-1] beim letzten Zeichen und besucht jedes Zeichen in umgekehrter Reihenfolge. Eine Schrittweite von null löst einen ValueError aus. Die Richtung muss zu den Grenzen passen: Die obige Regel für ein leeres Ergebnis bei „Start bei oder nach der Endgrenze“ gilt für eine positive Schrittweite.
Wende Ausschnitte auf einen festen Aufbau an
d = "2026-07-04"
year = d[:4]
month = d[5:7]
day = d[8:10]
print(month + "/" + day + "/" + year) # 07/04/2026
Die Positionen funktionieren, weil dieser Aufbau immer vier Ziffern für das Jahr und je zwei für Monat und Tag verwendet. Text mit unterschiedlichen Feldlängen benötigt eine Suche oder Aufteilung.
Die Umkehrung ermöglicht auch eine Palindromprüfung: word == word[::-1]. "level" besteht sie, "Level" aber nicht, weil Groß- und Kleinschreibung zählen. Weise clean = word.lower() zu und prüfe clean == clean[::-1], um Groß- und Kleinschreibung zu ignorieren.
Wichtige Erkenntnisse
- Ein Ausschnitt schließt seinen Start ein und seine Endgrenze aus.
- Mit weggelassenen Grenzen und negativen Positionen lassen sich Anfangs- und Endteile leicht auswählen.
- Ausschnittsgrenzen außerhalb des gültigen Bereichs werden begrenzt; eine Schrittweite von null löst einen
ValueErroraus. - Eine negative Schrittweite führt rückwärts;
[::-1]kehrt die ganze Zeichenkette um. - Ausschnitte an festen Positionen setzen einen einheitlichen Textaufbau voraus.
2Zeichenketten Zeichen für Zeichen verarbeiten
Eine Schleife kann jedes Zeichen untersuchen, fortlaufend zählen, beim ersten Treffer anhalten oder eine neue Nachricht erstellen. Dieselben kleinen Muster funktionieren für viele Textaufgaben: Vokale zählen, eine Ziffer finden oder ausgewählte Buchstaben verbergen. Zeichenketten haben nach ihrer Erstellung außerdem einen festen Wert. Wenn du eine Schleife Durchlauf für Durchlauf verfolgst, siehst du, wie ein Programm veränderten Text erzeugen kann, während die ursprüngliche Zeichenkette erhalten bleibt, und warum sich die Zuweisung an eine Variable vom Ändern eines Zeichens unterscheidet.
2.1 Die Zeichen einer Zeichenkette durchlaufen
Verwende eine Schleife, wenn für jedes Zeichen eine Entscheidung getroffen werden muss. Die Schleife kann Treffer zählen, ihre Positionen verwenden, beim ersten Treffer anhalten oder die Zeichen sammeln, die zu einem Ergebnis gehören.
Gehe Zeichen direkt durch
for ch in "hi!":
print(ch)
Der Körper wird dreimal ausgeführt, wobei ch nacheinander "h", "i" und "!" ist. Bei der leeren Zeichenkette wird der Körper nullmal ausgeführt. Eine direkte Zeichenschleife braucht keinen Index, wenn du nur das aktuelle Zeichen verwendest.
Initialisiere zum Zählen den Zähler vor der Schleife und erhöhe ihn nur, wenn die Prüfung zutrifft:
text = "Programming in Python"
count = 0
for ch in text.lower():
if ch in "aeiou":
count += 1
print(count) # 5
Durch das Kleinschreiben werden auch große Vokale erkannt. Die Prüfzeichenkette legt die gezählten Vokale fest; sie enthält kein y. Würdest du count innerhalb der Schleife zurücksetzen, ginge die Summe aus früheren Durchläufen verloren.
Verwende Positionen, wenn benachbarte Zeichen wichtig sind
range(len(text)) liefert die Indizes von null bis zum letzten gültigen Index. Für eine Aufgabe, die Position und Zeichen benötigt, liefert enumerate(text) beide zusammen:
for i, ch in enumerate("abc"):
print(i, ch)
Dies gibt zuerst 0 a, dann 1 b und dann 2 c aus. Die beiden Schleifenvariablen erhalten aus jedem Paar den Index und das Zeichen.
Um Nachbarn zu vergleichen, darf der letzte Index nicht die aktuelle Position sein, weil es danach kein nächstes Zeichen gibt:
text = "bookkeeper"
pairs = 0
for i in range(len(text) - 1):
if text[i] == text[i + 1]:
pairs += 1
print(pairs) # 3
Die Treffer sind oo, kk und ee. Mit range(len(text)) würde der letzte Durchlauf auf text[len(text)] zugreifen und einen IndexError auslösen.
Verwalte eine Position mit while
i = 0
while i < len(text):
print(text[i])
i += 1
Die Prüfung verwendet strikt <: Die Position len(text) liegt hinter dem Ende. Das Inkrement führt die Schleife ihrem Ende näher; lässt du es weg, wird bei nicht leerem Text endlos dasselbe Zeichen gelesen. Für einen Rückwärtslauf beginne bei len(text) - 1, fahre fort, solange i >= 0 gilt, und ziehe bei jedem Durchlauf eins ab.
Suche oder sammle
Für die erste Ziffer in "Room 42B" beende die Schleife, sobald ein Treffer verwendet wurde:
for ch in "Room 42B":
if ch.isdigit():
print(ch) # 4
break
Ohne break würden beide Ziffern ausgegeben. Für eine einfache Prüfung auf Vorhandensein beantwortet "4" in text bereits die Ja-oder-nein-Frage.
Um Text zu sammeln, beginne mit result = "" und füge jedes gewünschte Zeichen hinzu. Für "a b c" entsteht "abc", wenn du nur bei ch != " " etwas hinzufügst. Die Zuweisung ch = ch.upper() innerhalb einer Schleife ändert nur die Schleifenvariable; sie verändert nicht die in text gespeicherten Zeichen.
Wichtige Erkenntnisse
- Eine direkte
for-Schleife durchläuft jedes Zeichen der Reihe nach. - Initialisiere Zähler und Akkumulatoren vor der Schleife.
enumerate()liefert jeden Index zusammen mit seinem Zeichen.- Beende den Durchlauf eine Position früher, wenn du
text[i + 1]liest. - Eine
while-Schleife braucht eine sichere Grenze und eine Aktualisierung der Position. breakbeendet eine Suche beim ersten Treffer.
2.2 Neue Zeichenketten erstellen, statt vorhandene zu verändern
Zeichenketten sind unveränderlich: Ihre Zeichen können nicht geändert werden, nachdem die Zeichenkette erstellt wurde. Ein Programm, das scheinbar Text bearbeitet, erstellt eine andere Zeichenkette und bestimmt, welche Variable darauf verweist.
Lies ein Zeichen, aber weise ihm nichts zu
name = "Jane"
name[0] = "D" # TypeError
Über den Index lässt sich "J" lesen, aber er kann nicht das Ziel einer Zuweisung sein. Auch del name[0] löst einen TypeError aus. Um "Dane" zu erhalten, kombiniere das gewünschte erste Zeichen mit dem unveränderten Ende:
name = "Jane"
name = "D" + name[1:]
print(name) # Dane
Python wertet zuerst die rechte Seite aus und erzeugt eine neue Zeichenkette. Anschließend lässt Python name auf dieses Ergebnis verweisen.
Ersetze oder füge an einer bekannten Position ein
Für einen gültigen nicht negativen Index i verwenden diese Ausdrücke unterschiedliche Ausschnitte auf der rechten Seite:
| Aufgabe | Ausdruck |
|---|---|
Zeichen bei i ersetzen | text[:i] + new + text[i + 1:] |
Vor dem Zeichen bei i einfügen | text[:i] + new + text[i:] |
Beim Ersetzen wird das alte Zeichen übersprungen; beim Einfügen bleibt es erhalten. Mit text = "cat", i = 1 und new = "X" ergibt das Ersetzen "cXt", während das Einfügen "cXat" ergibt.
Wandle einen negativen Index in den entsprechenden nicht negativen Index um, bevor du dieses Ersetzungsmuster verwendest. Für das letzte Zeichen von "cat" ist i = len(text) - 1 gleich 2. Wenn du -1 direkt in text[i + 1:] einsetzt, wird daraus text[0:]. Dadurch wird die gesamte alte Zeichenkette angehängt und es entsteht "caXcat".
Halte das Ergebnis einer Methode fest
Umwandlungsmethoden folgen derselben Regel der Unveränderlichkeit:
msg = "hello"
msg.upper()
print(msg) # hello
msg = msg.upper()
print(msg) # HELLO
Der erste Aufruf berechnet ein Ergebnis, das das Programm verwirft. Die Zuweisung hält das zweite Ergebnis fest. Zeichenkettenmethoden ändern die ursprüngliche Zeichenkette nie, aber ihre Rückgabetypen unterscheiden sich: upper() gibt eine Zeichenkette zurück, find() eine ganze Zahl und isdigit() einen booleschen Wert.
Verfolge zwei Namen für einen Wert
Nach a = "cat" und b = a verweisen beide Variablen auf "cat". Die Ausführung von a = a + "s" gibt a den neuen Wert "cats"; b verweist weiterhin auf "cat". Kein Zeichen der gemeinsam referenzierten alten Zeichenkette wurde geändert. a += "s" führt bei einer Zeichenkette dieselbe Art erneuter Zuweisung aus.
Erstelle einen veränderten Wert in einer Schleife
word = "secret"
masked = ""
for ch in word:
if ch in "aeiou":
masked += "*"
else:
masked += ch
print(masked) # s*cr*t
print(word) # secret
Jeder Durchlauf erweitert masked um ein ausgewähltes Zeichen. Setzt du stattdessen jedes Zeichen mit result = ch + result an den Anfang, wird der Text umgekehrt: Die Durchläufe über "drawer" erzeugen "d", "rd", "ard", "ward", "eward" und "reward".
Wiederholte Verkettung ist für kurze Beispiele praktisch. Wenn die Teile bereits in einer Liste vorliegen, erstellt "".join(pieces) direkt ein Ergebnis und kann auch ein Trennzeichen dazwischen setzen.
Wichtige Erkenntnisse
- Eine Zeichenkette kann weder durch Elementzuweisung noch durch Löschen verändert werden.
- Ersetzen und Einfügen erzeugen neue Zeichenketten aus Ausschnitten.
- Halte das Ergebnis einer Umwandlung durch eine Zuweisung fest.
- Eine erneute Zuweisung an eine Variable lässt andere Variablen weiterhin auf den alten Wert verweisen.
- Ein Akkumulator erstellt eine neue Zeichenkette aus jeweils einem ausgewählten Teil.
3Text mit Zeichenkettenmethoden umwandeln, durchsuchen und prüfen
Mit Zeichenkettenmethoden kannst du nützliche Fragen zu Text stellen und bereinigte Versionen davon erzeugen. Ein Programm muss möglicherweise zusätzliche Leerzeichen in einer Antwort akzeptieren, ein Trennzeichen finden oder prüfen, ob sich eine Mengenangabe in eine Zahl umwandeln lässt. Wähle eine Methode nach dem benötigten Ergebnis: verändertem Text, einer Position, einer Anzahl oder einem booleschen Prüfergebnis. Achte auf exakte Übereinstimmung, den Rückgabewert bei erfolgloser Suche und den Unterschied zwischen Textreihenfolge und numerischer Reihenfolge.
3.1 Groß- und Kleinschreibung ändern und Text mit Methoden bereinigen
Eine Methode ist eine Funktion, die zu einem Wert gehört. Zeichenkettenmethoden übernehmen häufige Aufgaben wie das Ändern der Groß- und Kleinschreibung, das Bereinigen von Eingaben an den Rändern und das Ersetzen von Text. Jeder Aufruf gibt ein Ergebnis zurück und lässt die ursprüngliche Zeichenkette unverändert.
Rufe eine Methode mit Punktnotation auf
Schreibe value.method(arguments), wie in "hello".upper(). Die Klammern führen den Aufruf aus. name.upper ohne Klammern verweist auf die Methode selbst; es erzeugt keinen Text in Großbuchstaben. upper(name) findet keine eigenständige Funktion namens upper. Verwende dir(""), um Zeichenkettenmethoden aufzulisten, und help(str.upper), um etwas über eine davon zu lesen.
Wähle eine Operation für Groß- und Kleinschreibung
| Methode | Ergebnis für das Beispiel |
|---|---|
"Hello".upper() | "HELLO" |
"Hello".lower() | "hello" |
"Hello".swapcase() | "hELLO" |
"the old man".title() | "The Old Man" |
"hELLO wORLD".capitalize() | "Hello world" |
capitalize() ändert das erste Zeichen und schreibt den Rest klein; title() beginnt nach Zeichen, die keine Buchstaben sind, erneut Wörter. Dadurch wird "they're".title() zu "They'Re", sodass eine automatische Großschreibung von Wortanfängen möglicherweise geprüft werden muss.
Für Vergleiche ohne Unterschiede in der Groß- und Kleinschreibung berücksichtigt casefold() über verschiedene Sprachen hinweg mehr Fälle als lower(). "Straße".lower() ist "straße", während "Straße".casefold() gleich "strasse" ist. Vereinheitliche vor dem Vergleich bei beiden Zeichenketten die Groß- und Kleinschreibung auf diese Weise.
Bereinige die Enden von Text
strip() entfernt vorangestellte und abschließende Leerraumzeichen, darunter Leerzeichen, Tabulatoren und Zeilenumbrüche. Abstände im Inneren bleiben erhalten: " New York \n".strip() ist "New York". lstrip() bereinigt nur das linke Ende; rstrip() nur das rechte.
Mit einem Argument entfernt die Methode beliebige dieser Zeichen wiederholt von den Enden. Sie entfernt kein genaues Wort:
print("...Wow!!!".strip(".!")) # Wow
print("report.txt".rstrip(".txt")) # repor
print("report.txt".removesuffix(".txt")) # report
Das letzte t in report gehört ebenfalls zur Menge der zu entfernenden Zeichen und verschwindet daher. removeprefix() und removesuffix() entfernen genauen Text an einem Ende; sie sind ab Python 3.9 verfügbar.
Ersetze Treffer und verkette Änderungen
replace(old, new) ersetzt jeden exakten Treffer. Ein drittes Argument begrenzt die Anzahl der geänderten Treffer: "a-b-c".replace("-", "", 1) ergibt "ab-c". Ein leerer Ersatz löscht Treffer. Groß- und Kleinschreibung zählen, daher ergibt "Cat cat".replace("cat", "dog") den Wert "Cat dog".
answer = " YES \n"
answer = answer.strip().lower()
print(answer == "yes") # True
Die Aufrufe laufen von links nach rechts: strip() gibt "YES" zurück, danach gibt lower() den Wert "yes" zurück. Eine Verkettung funktioniert, wenn die nächste Methode zum Datentyp des vorherigen Ergebnisses passt. Ein Suchergebnis ist eine ganze Zahl und unterstützt daher keine Methoden zur Bereinigung von Zeichenketten.
Zum Auffüllen ergibt "7".zfill(3) den Wert "007", "Total".ljust(8) fügt rechts drei Leerzeichen hinzu und "Hi".center(8, "*") ergibt "***Hi***". rjust() füllt links auf. Diese Breiten sind Mindestwerte; längerer Text bleibt vollständig erhalten.
Wichtige Erkenntnisse
- Verwende Punktnotation und Klammern, um eine Zeichenkettenmethode aufzurufen.
- Operationen für Groß- und Kleinschreibung haben unterschiedliche Aufgaben;
casefold()unterstützt sprachübergreifende Vergleiche. strip(chars)entfernt eine Menge von Zeichen an den Enden; für genaue Vor- oder Nachsilben brauchst duremoveprefix()oderremovesuffix().replace()sucht nach genau übereinstimmendem Text und kann die Anzahl der Änderungen begrenzen.- Umwandlungsverkettungen laufen von links nach rechts über jede zurückgegebene Zeichenkette.
- Das Auffüllen ergänzt Zeichen bis zu einer Mindestbreite.
3.2 Text innerhalb einer Zeichenkette suchen
Eine Suche kann drei verschiedene Fragen beantworten: ob Text vorkommt, wo er beginnt und wie oft er vorkommt. Wähle das Ergebnis, das zu der Entscheidung passt, die dein Programm treffen muss.
Wähle ein Suchergebnis
| Werkzeug | Ergebnis | Wenn kein Treffer vorhanden ist |
|---|---|---|
sub in text | Vorhandensein als True oder False | False |
text.find(sub) | Erster Anfangsindex | -1 |
text.rfind(sub) | Letzter Anfangsindex | -1 |
text.index(sub) | Erster Anfangsindex | Löst ValueError aus |
text.count(sub) | Anzahl nicht überlappender Treffer | 0 |
Eine Teilzeichenkette ist eine zusammenhängende Folge von Zeichen. "py" in "happy" ist True, aber "hpy" in "happy" ist False. Beim Abgleich zählt die Groß- und Kleinschreibung: "Py" in "python" ist False. not in kehrt die Prüfung auf Vorhandensein um. Die leere Zeichenkette kommt in jeder Zeichenkette vor.
Finde das richtige Vorkommen
text = "banana"
print(text.find("an")) # 1
print(text.find("an", 2)) # 3
print(text.rfind("an")) # 3
Die optionale Startposition überspringt frühere mögliche Treffer. Der zurückgegebene Index zählt weiterhin vom Anfang der ganzen Zeichenkette. index() gibt dieselbe Position zurück, wenn ein Treffer existiert. Der Fehler bei fehlendem Treffer macht die Methode nützlich, wenn das Fehlen auf ein unerwartetes Problem hinweist.
Prüfe eine Position vor dem Ausschneiden
email = "maria.lopez@example.org"
at = email.find("@")
if at != -1:
user = email[:at]
domain = email[at + 1:]
print(user) # maria.lopez
print(domain) # example.org
Die Suche gibt 11 zurück. Der erste Ausschnitt endet vor @; der zweite beginnt ein Zeichen danach. Wäre das Kennzeichen nicht vorhanden, wäre at gleich -1. Würdest du diesen Wert als Ausschnittsgrenze verwenden, würde unbemerkt Text nahe dem Ende ausgewählt. Behandle daher ein fehlendes Kennzeichen, bevor du Teile herausnimmst.
Verwende if text.find("x"): nicht als Prüfung auf Vorhandensein. Ein Treffer bei Index 0 gilt in einer Bedingung als falsch, während der Wert -1 für ein fehlendes Ergebnis als wahr gilt. Verwende if "x" in text: oder vergleiche die Position ausdrücklich mit -1.
Suche ab einem bekannten Kennzeichen
Bei line = "Order #4521 shipped" folgt die Nummer auf # und endet beim nächsten Leerzeichen:
start = line.find("#") + 1
end = line.find(" ", start)
number = line[start:end]
print(number) # 4521
Hier sind beide Kennzeichen vorhanden. Der Start der zweiten Suche bei start überspringt das frühere Leerzeichen nach Order. Falls Kennzeichen fehlen können, prüfe jedes unmittelbare Suchergebnis, bevor du eins addierst oder einen Ausschnitt bildest. Die Addition von eins zu -1 würde die fehlgeschlagene Suche verbergen, indem daraus 0 wird.
Zähle vollständige Treffer
"banana".count("a") ist 3 und "banana".count("ana") ist 1. Die beiden möglichen Treffer ana überlappen sich, daher zählt count() nicht beide. Ebenso ist "aaaa".count("aa") gleich 2.
Um Groß- und Kleinschreibung zu ignorieren, durchsuche eine umgewandelte Version, etwa mit "python" in sentence.lower(). Die Suche gleicht innerhalb dieser Version weiterhin exakt ab. Für Zählungen und Prüfungen auf Vorhandensein kannst du die umgewandelte Zeichenkette direkt verwenden; ein Index gehört zu der jeweils durchsuchten Zeichenkette.
Wichtige Erkenntnisse
- Verwende
infür das Vorhandensein, eine Suchmethode für die Position undcount()für die Häufigkeit. find()undrfind()geben -1 zurück, wenn Text fehlt;index()löst einenValueErroraus.- Prüfe ein Suchergebnis, bevor du es als Index oder Ausschnittsgrenze verwendest.
- Ein Startargument überspringt frühere Treffer, wobei die Indizes weiterhin für die ganze Zeichenkette gelten.
count()zählt nicht überlappende Treffer.
3.3 Zeichenketten prüfen und vergleichen
Zeichenkettenprüfungen geben boolesche Werte zurück, die eine Bedingung steuern können. Sie helfen dir, Eingaben zu akzeptieren, die einer Regel entsprechen, und Text in einer einheitlichen Form zu vergleichen.
Prüfe die Enden oder die Zeichen
startswith() und endswith() prüfen genauen Text an den Enden. Mit einem Tupel kann eine Prüfung mehrere Endungen akzeptieren: name.endswith((".jpg", ".png")). Das großgeschriebene "photo.PNG" besteht diese Prüfung nur, wenn du es zuerst kleinschreibst.
| Prüfung | Wahr, wenn die nicht leere Zeichenkette Folgendes enthält … |
|---|---|
isalpha() | Nur Buchstaben |
isalnum() | Nur Buchstaben oder Ziffern |
isdigit() | Nur Unicode-Ziffernzeichen |
isdecimal() | Nur Dezimalziffernzeichen |
isspace() | Nur Leerraumzeichen |
Alle fünf geben für "" den Wert False zurück. Buchstaben müssen nicht englisch sein: "café".isalpha() ist True. Das Leerzeichen in "hello world" führt dazu, dass isalpha() falsch ergibt.
isupper() und islower() betrachten Zeichen mit Groß- und Kleinschreibung und setzen mindestens eines davon voraus. "ABC1".isupper() ist True; die Ziffer ändert nichts an den Großbuchstaben. "123" hat keine Zeichen mit Groß- und Kleinschreibung, daher sind beide Prüfungen falsch.
Validiere vor der Umwandlung
Eine Ziffernprüfung erfasst nicht jede Zahl, die Python lesen kann. "-5".isdigit(), "3.5".isdigit() und " 42".isdigit() sind falsch, weil ein Vorzeichen, ein Punkt oder ein Leerzeichen keine Ziffer ist. Außerdem ist "²".isdigit() wahr, obwohl int("²") fehlschlägt. isdecimal() lehnt die hochgestellte Ziffer ab und eignet sich für die Eingabe einer einfachen nicht negativen ganzen Zahl.
text = input("Tickets: ").strip()
if text.isdecimal() and int(text) > 0:
print("Accepted")
else:
print("Enter a positive whole number")
Die Zeichenkettenprüfung läuft zuerst. Ist sie falsch, überspringt and die Umwandlung und schützt so vor leeren oder nicht numerischen Eingaben. " 12 " wird zu "12" und besteht die Prüfung; "0" lässt sich sicher umwandeln, besteht aber die Prüfung auf einen positiven Wert nicht. Diese Regel lehnt Eingaben mit Vorzeichen oder Dezimalpunkt bewusst ab.
Eine Regel für Benutzernamen kann Längen- und Zeichenprüfungen kombinieren: 3 <= len(name) <= 12 and name.isalnum(). "ada99" besteht die Prüfung, "ada 99" besteht die Zeichenprüfung nicht und "ad" besteht die Längenprüfung nicht.
Vergleiche bereinigten Text
Gleichheit erfordert dieselben Zeichen in derselben Reihenfolge. "Yes" == "yes" und "yes " == "yes" sind falsch. Für Antworten, bei denen Groß- und Kleinschreibung sowie Leerraumzeichen an den Rändern ignoriert werden sollen, vergleiche typed.strip().casefold() mit expected.strip().casefold().
Die Sortierung erfolgt Zeichen für Zeichen. Der erste unterschiedliche Unicode-Codepunkt entscheidet. ord("A") ist 65, ord("Z") ist 90 und ord("a") ist 97; chr(97) ergibt "a". Daher ist "Zebra" < "apple" wahr. Ist eine Zeichenkette der Anfang der anderen, kommt die kürzere zuerst: "app" < "apple".
Auch Zeichenketten aus Ziffern verwenden die Zeichenreihenfolge: "10" < "9" ist wahr, weil "1" vor "9" kommt. Wandle beim Vergleich von Mengenangaben in Zahlen um. Auch bei Buchstaben mit Akzent ist Vorsicht nötig: ord("é") ist 233, daher ist "école" > "zoo" wahr. Diese eingebaute Reihenfolge folgt den Codepunkten, nicht der Wörterbuchreihenfolge einer Sprache.
Wichtige Erkenntnisse
- Zeichenkettenprüfungen geben boolesche Werte zurück; Zeichenprüfungen prüfen außerdem, ob die Zeichenkette nicht leer ist.
isdecimal()ist für Eingaben, die fürint()bestimmt sind, strenger alsisdigit().- Verwende vor einer abgesicherten numerischen Umwandlung eine Zeichenprüfung.
- Bereinige beide Zeichenketten einheitlich, wenn Groß- und Kleinschreibung sowie Leerzeichen an den Rändern keine Rolle spielen sollen.
- Die Reihenfolge von Zeichenketten richtet sich nach dem ersten unterschiedlichen Codepunkt; für eine numerische Reihenfolge brauchst du Zahlenwerte.
4Text in Teile zerlegen und Teile zu Text zusammenfügen
Eine Textzeile enthält oft mehrere nützliche Teile: Wörter in einer Nachricht, Felder in einem Datensatz oder Teile eines Codes. Das Aufteilen wandelt diese Zeile in eine geordnete Sammlung um, die du untersuchen, deren Elemente du zählen und umwandeln kannst. Das Zusammenfügen erstellt aus Teilen eine Zeichenkette mit einem Trennzeichen deiner Wahl. Die Regeln für Trennzeichen bestimmen, ob leere Felder und ursprüngliche Abstände erhalten bleiben. Die Wahl ist daher wichtig, wenn du Text bereinigst oder ihn genau rekonstruieren musst.
4.1 Eine Zeichenkette in eine Liste von Teilen zerlegen
split() wandelt eine Zeichenkette in eine Liste von Zeichenketten um. Eine Liste ist eine geordnete Sammlung, die in eckigen Klammern geschrieben wird. Du kannst ein Element über seinen Index lesen, die Elemente durchlaufen oder sie mit len() zählen.
Wähle Leerraumzeichen oder ein genaues Trennzeichen
Ohne Argument behandelt split() eine Folge von Leerraumzeichen als eine Grenze und ignoriert Leerraumzeichen an beiden Enden:
words = " the quick brown fox ".split()
print(words) # ['the', 'quick', 'brown', 'fox']
print(len(words)) # 4
print(words[0]) # the
Bei einem ausdrücklich angegebenen Trennzeichen wird an jedem genauen Vorkommen getrennt. Aufeinanderfolgende Trennzeichen erhalten ein leeres Feld:
fields = "red,green,,blue".split(",")
# ["red", "green", "", "blue"]
Das leere dritte Element kann für einen Wert stehen, der leer gelassen wurde. Es zählt dennoch als Element der Liste.
| Ausdruck | Ergebnis |
|---|---|
"a b".split() | ["a", "b"] |
"a b".split(" ") | ["a", "", "b"] |
"a,b".split(", ") | ["a,b"] |
Ein Trennzeichen kann mehrere Zeichen enthalten, die aber alle übereinstimmen müssen. Kommt kein Trennzeichen vor, enthält das Ergebnis die gesamte ursprüngliche Zeichenkette als ein Element. Das Aufteilen an Komma und Leerzeichen unterscheidet sich daher vom Aufteilen an einem Komma.
Begrenze die Aufteilung
Das zweite Argument, maxsplit, begrenzt die Anzahl der Aufteilungen, nicht die Anzahl der entstehenden Elemente:
print("key=value=more".split("=", 1))
# ["key", "value=more"]
print("archive.tar.gz".rsplit(".", 1))
# ["archive.tar", "gz"]
split() beginnt links; rsplit() beginnt rechts. Eine Aufteilung von rechts trennt die letzte Dateiendung ab, ohne an früheren Punkten zu trennen.
Lies Felder und wandle Mengenangaben um
line = "Lovelace,Ada,1815"
parts = line.split(",")
if len(parts) == 3:
last = parts[0]
first = parts[1]
year = int(parts[2])
print(f"{first} {last} was born in {year}.")
Die Ausgabe ist "Ada Lovelace was born in 1815.". Die Längenprüfung verhindert, dass ein fehlendes Element einen IndexError verursacht. Sie prüft nicht, ob das Jahr numerisch ist; dafür braucht es eine separate Eingaberegel, wenn die Daten ungültig sein könnten.
Jeder aufgeteilte Teil ist zunächst eine Zeichenkette. Um "3 14 15" zu summieren, initialisiere total = 0, durchlaufe line.split() und addiere int(part). Das Ergebnis ist 32; eine Verkettung der nicht umgewandelten Teile würde die Ziffern zusammenfügen.
Ein ausdrücklich angegebenes Trennzeichen erhält die umgebenden Leerzeichen. "a, b".split(",") ergibt ["a", " b"]. Rufe für jeden Teil strip() auf, wenn diese Leerzeichen unerwünscht sind.
Erkenne zwei verwandte Ergebnisse
splitlines() trennt an Zeilenumbrüchen: "line one\nline two".splitlines() ergibt zwei Zeichenketten. partition("=") gibt immer ein dreiteiliges Tupel zurück: den Text vor dem ersten Trennzeichen, das Trennzeichen und den Text danach. "user=ada".partition("=") ergibt ("user", "=", "ada"); für "user" ergibt die Methode ("user", "", "").
Wichtige Erkenntnisse
split()gibt eine geordnete Liste von Zeichenketten zurück.- Das Aufteilen an Leerraumzeichen fasst Folgen zusammen; ausdrücklich angegebene Trennzeichen erhalten leere Felder.
maxsplitbegrenzt die Anzahl der Aufteilungen undrsplit()beginnt rechts.- Prüfe die Anzahl der Felder vor dem Indexzugriff und wandle numerische Felder vor dem Rechnen um.
splitlines()trennt Zeilen;partition()gibt den Text davor, das Trennzeichen und den Text danach zurück.
4.2 Zeichenketten mit einem Trennzeichen zusammenfügen
join() erstellt aus einer Folge von Zeichenketten eine Zeichenkette. Die Zeichenkette vor dem Punkt liefert das Trennzeichen, das zwischen benachbarten Elementen erscheint.
Setze das Trennzeichen an den Anfang
colors = ["red", "green", "blue"]
text = ", ".join(colors)
print(text) # red, green, blue
Lies dies als „Füge die Farben mit Komma und Leerzeichen zusammen“. Vor dem ersten und nach dem letzten Element steht kein Trennzeichen. Du kannst den Aufbau der Ausgabe ändern, indem du nur das Trennzeichen änderst:
| Ausdruck | Ergebnis |
|---|---|
"".join(["a", "b", "c"]) | "abc" |
"-".join(["a", "b", "c"]) | "a-b-c" |
"\n".join(["a", "b", "c"]) | Ein Element pro Zeile |
join() gehört zur Trennzeichenkette. ["a", "b"].join(",") löst einen AttributeError aus, weil die Liste keine Methode join hat. Ein einzelner Aufruf passt sich auch der Anzahl der Teile an; du musst für unterschiedliche Listenlängen keine neue Kette von +-Operationen schreiben.
Wandle Teile, die keine Zeichenketten sind, zuerst um
Alle Teile müssen bereits Zeichenketten sein. ", ".join([1, 2, 3]) löst einen TypeError aus. map(str, items) wendet str() auf jedes Element an, daher funktioniert dies:
items = [1, 2, 3]
text = " ".join(map(str, items))
print(text) # 1 2 3
Das an map() übergebene str ist die Umwandlungsfunktion. join() erhält die umgewandelten Teile und gibt eine Zeichenkette zurück.
Eine Zeichenkette ist selbst eine Folge von einzeichenlangen Zeichenketten, daher ergibt " ".join("ABC") den Wert "A B C". Das kann nützlich sein. Übergibst du jedoch ein einzelnes Wort, obwohl du eine Liste von Wörtern meinst, werden Trennzeichen zwischen seine Zeichen gesetzt.
Forme Abstände und Trennzeichen um
text = "too many spaces"
cleaned = " ".join(text.split())
print(cleaned) # too many spaces
Zuerst entstehen beim Aufteilen an Leerraumzeichen die drei Wörter. Das Zusammenfügen mit einem Leerzeichen legt einen einheitlichen Abstand fest und lässt keine Leerzeichen an den Rändern stehen. Die ursprünglichen Abstände gehen beim Aufteilen verloren.
Bei einem ausdrücklich angegebenen Trennzeichen erhalten die leeren Felder genügend Informationen, um den genauen Text wiederherzustellen. Ist s = "a,,b,", ergibt s.split(",") den Wert ["a", "", "b", ""], und ",".join(...) ergibt wieder "a,,b,". Für diese genaue Rekonstruktion muss das Trennzeichen dasselbe sein.
Ein anderes Trennzeichen ändert den Aufbau: "-".join("2026/07/04".split("/")) ergibt "2026-07-04". Hier ist auch replace("/", "-") eine direkte Lösung.
Sammle ein kurzes Ergebnis aus Wörtern
Für ein Akronym teile "portable network graphics" auf, beginne mit acronym = "" und füge für jedes Wort word[0].upper() hinzu. Das Aufteilen an Leerraumzeichen liefert nicht leere Wörter, deren erste Zeichen also existieren. So entsteht "PNG". Sind die Buchstaben bereits in einer Liste, erstellt ".".join(["P", "N", "G"]) den Wert "P.N.G" ohne abschließenden Punkt.
Wichtige Erkenntnisse
- Rufe
join()auf dem Trennzeichen auf und übergib die Teile als Argument. - Trennzeichen stehen nur zwischen den Teilen und jeder Teil muss eine Zeichenkette sein.
- Das Aufteilen an Leerraumzeichen und Zusammenfügen mit einem Leerzeichen vereinheitlicht die Abstände.
- Das Zusammenfügen mit demselben ausdrücklich angegebenen Trennzeichen kann Text einschließlich leerer Felder rekonstruieren.
5Ausgaben mit f-Strings formatieren
Eine nützliche Ausgabe kombiniert einen korrekten Wert mit einem lesbaren Aufbau. Ein f-String setzt Werte und Ausdrücke direkt in Text ein. Anschließend kannst du das Aussehen jedes Felds festlegen: Nachkommastellen, Gruppierung, Vorzeichen, Datumsangaben oder ausgerichtete Spalten. Halte Berechnung und Anzeige getrennt. Ein Feld kann zwei Nachkommastellen oder einen gekürzten Namen anzeigen, während die ursprüngliche Variable ihren vollständigen Wert für spätere Berechnungen oder eine andere Anzeige behält.
5.1 Werte mit f-Strings in Text einsetzen
Ein f-String ist ein Zeichenkettenliteral mit f oder F vor seinem öffnenden Anführungszeichen. Darin stehen Ausdrücke in geschweiften Klammern, deren Werte in den Text eingesetzt werden.
Setze Variablen und Ausdrücke ein
name = "Ada"
age = 36
message = f"{name} is {age} years old."
print(message) # Ada is 36 years old.
Zahlen werden innerhalb eines Felds automatisch zu Text. Dieselbe Nachricht ließe sich durch Verkettung und mit str(age) erzeugen, aber der f-String zeigt den endgültigen Aufbau an einer Stelle.
Die geschweiften Klammern können Rechnungen, Methodenaufrufe oder Funktionsaufrufe enthalten:
price = 4.5
qty = 3
print(f"Cost: {price * qty}") # Cost: 13.5
print(f"Name: {name.upper()}") # Name: ADA
word = "Python"
print(f"{len(word)} letters") # 6 letters
Python wertet jeden Ausdruck aus, wenn die Zeile ausgeführt wird. Eine gespeicherte Zeichenkette bleibt nicht mit den Variablen verbunden, aus denen sie erstellt wurde. Ändert sich qty, nachdem message erstellt wurde, behält diese Zeichenkette ihre vorhandenen Zeichen.
Unterscheide gewöhnlichen Text von Feldern
Ohne das Präfix ist "Hello {name}" gewöhnlicher Text und behält seine geschweiften Klammern. Ein fehlendes f ist ein häufiger Grund dafür, dass ein Programm den Variablennamen statt seines Werts ausgibt. Mit Präfix löst ein Name, dem noch kein Wert zugewiesen wurde, bei der Ausführung des Ausdrucks einen NameError aus.
Um eine geschweifte Klammer als Zeichen anzuzeigen, verdopple sie:
x = 5
print(f"{{x}} = {x}") # {x} = 5
Die verdoppelten geschweiften Klammern liefern den wörtlichen Text {x}. Das einfache Paar um das letzte x liefert seinen Wert.
Halte Ausdrücke mit Anführungszeichen lesbar
Verwende innerhalb eines Felds die andere Art von Anführungszeichen:
print(f"Shout: {'hi'.upper()}") # Shout: HI
Diese Schreibweise funktioniert in allen Python-Versionen mit f-Strings, die mit 3.6 eingeführt wurden. Python 3.12 und neuer erlauben auch, die äußere Art von Anführungszeichen innerhalb des Felds erneut zu verwenden. Escape-Sequenzen funktionieren weiterhin in f-Strings: f"Name: {name}\nAge: {age}" gibt den Text in zwei Zeilen aus.
Für eine schnelle Anzeige bei der Fehlersuche akzeptieren Python 3.8 und neuer = nach einem Ausdruck. Mit x = 5 ergibt f"{x=}" den Wert "x=5"; mit total = 12 ergibt f"{total = }" den Wert "total = 12". Eingegebene Leerzeichen um den Ausdruck und das Gleichheitszeichen erscheinen in der Anzeige.
Lies ältere Formatierungsarten
Vorhandener Python-Code kann denselben Text auf andere Weise erstellen:
| Art | Beispiel | Ergebnis |
|---|---|---|
| f-String | f"{name} is {age}" | "Ada is 36" |
| Zeichenkettenmethode | "{} is {}".format(name, age) | "Ada is 36" |
| Prozentformatierung | "%s is %d" % (name, age) | "Ada is 36" |
str.format() füllt Felder in geschweiften Klammern aus seinen Argumenten. Nummerierte Felder können ein Argument erneut verwenden: "{0} {1} {0}".format("a", "b") ergibt "a b a". Bei der Prozentformatierung setzt %s Text und %d eine ganze Zahl ein. Wenn du diese Felder erkennst, kannst du auch Programme lesen, die geschrieben wurden, bevor f-Strings üblich waren.
Wichtige Erkenntnisse
- Ein f-String braucht das Präfix
fund geschweifte Klammern um jeden Ausdruck. - Felder werden bei der Ausführung des f-Strings ausgewertet; gespeicherter Text wird später nicht aktualisiert.
- Doppelte geschweifte Klammern zeigen geschweifte Klammern als Zeichen an.
str.format()und Prozentformatierung sind ältere Möglichkeiten, Werte einzusetzen.
5.2 Zahlen, Datums- und Zeitangaben lesbar formatieren
Eine Formatangabe steuert, wie ein Wert angezeigt wird. Setze nach dem Ausdruck einen Doppelpunkt und dann die Anweisungen: f"{value:spec}". Die Formatierung gibt Text zurück und lässt den ursprünglichen Zahlenwert unverändert.
Lege Nachkommastellen fest und verstehe die Rundung
.Nf zeigt genau N Ziffern nach dem Dezimalpunkt an. f"{3.14159:.2f}" ergibt "3.14", f"{2/3:.3f}" ergibt "0.667" und f"{5:.2f}" ergibt "5.00". .0f zeigt keinen Dezimalpunkt an: f"{7.6:.0f}" ergibt "8".
Beim Runden wird der tatsächlich gespeicherte Wert verwendet. Die meisten Dezimalbrüche werden als sehr nahe binäre Approximationen gespeichert. Die Gleitkommazahl 2.675 liegt geringfügig unter diesem exakten Dezimalwert, daher ergibt f"{2.675:.2f}" den Wert "2.67". Werte genau in der Mitte werden zur geraden letzten Ziffer gerundet: 0.125 wird bei zwei Nachkommastellen als "0.12" angezeigt, während 0.375 als "0.38" angezeigt wird. f"{2.5:.0f}" ergibt "2". Programme, die exakte Geldberechnungen benötigen, speichern oft ganze Centbeträge als ganze Zahlen.
Ergänze Gruppierung und Prozentangaben
| Formatangabe | Beispielergebnis |
|---|---|
f"{1234567:,}" | "1,234,567" |
f"{1234567:_}" | "1_234_567" |
f"{1234567.891:,.2f}" | "1,234,567.89" |
f"{0.256:.1%}" | "25.6%" |
Ein Komma gruppiert Tausender; der Punkt leitet die Genauigkeitsangabe für Nachkommastellen ein. Setze bei einem Dollarbetrag das Dollarzeichen außerhalb des Felds: Mit amount = 1250.5 ergibt f"${amount:,.2f}" den Wert "$1,250.50".
Der Typ % multipliziert mit 100 und fügt % hinzu. Verwende einen Bruchteil wie 0.256, um 25.6% anzuzeigen. Wenn du 25.6 übergibst, wird der angezeigte Prozentwert erneut multipliziert. Ohne ausdrückliche Genauigkeitsangabe zeigt % sechs Nachkommastellen an.
Formatiere ganze Zahlen und Datumsteile
d ist für ganze Zahlen bestimmt. f"{42:d}" funktioniert, aber f"{3.0:d}" löst einen ValueError aus, weil eine Gleitkommazahl keine ganze Zahl ist. Eine vorangestellte Null vor einer Breite füllt mit Nullen auf; ein Pluszeichen fordert ein sichtbares Vorzeichen an:
print(f"{7:03d}") # 007
print(f"{5:+d}") # +5
print(f"{-5:+d}") # -5
Für Monat 7, Tag 4 und Jahr 2026 erstellt f"{month:02d}/{day:02d}/{year}" den Wert "07/04/2026". Für Stunde 9 und Minute 5 erstellt f"{hour}:{minute:02d}" den Wert "9:05". Das Auffüllen mit Nullen verhindert, dass eine einstellige Minute als "9:5" erscheint.
Kombiniere Anweisungen in der richtigen Reihenfolge
Die Reihenfolge ist Füllzeichen, Ausrichtung, Vorzeichen, Null, Breite, Gruppierung, Genauigkeit, Typ. Nicht benötigte Teile kannst du weglassen. f"{12345.678:>12,.2f}" verwendet Rechtsausrichtung, Breite 12, Gruppierung mit Komma und zwei Nachkommastellen und ergibt " 12,345.68".
Die Genauigkeit kann aus einer anderen Variablen stammen: Mit places = 3 ergibt f"{3.14159:.{places}f}" den Wert "3.142". Dieselben Formatangaben funktionieren in format(value, spec) und Feldern von str.format(). Behalte die ursprüngliche Zahl für Berechnungen; round(value, 2) gibt eine gerundete Zahl zurück, wenn die Berechnung das verlangt.
Wichtige Erkenntnisse
- Ein Doppelpunkt leitet Anzeigeanweisungen ein; der gespeicherte Wert ändert sich nicht.
- Die Festkommagenauigkeit legt Nachkommastellen fest, und die Rundung folgt dem gespeicherten Wert.
- Ein Komma gruppiert Tausender;
%multipliziert einen Bruchteil mit 100. dbenötigt eine ganze Zahl; das Auffüllen mit Nullen hält Datums- und Zeitteile lesbar.- Behalte Zahlen zum Rechnen und formatiere sie bei der Anzeige.
5.3 Ausgaben in Spalten ausrichten
Eine Feldbreite reserviert eine Mindestanzahl von Zeichenpositionen für einen Wert. Die Kombination von Breiten macht kurze Tabellen und Kassenbons in einem Terminal lesbar.
Wähle Breite und Ausrichtung
Zeichenketten werden standardmäßig linksbündig und Zahlen rechtsbündig ausgerichtet. f"{'cat':6}" ergibt "cat ", während f"{42:6}" den Wert " 42" ergibt. Verwende ein Ausrichtungszeichen für eine ausdrückliche Auswahl:
| Zeichen | Bedeutung | Beispiel |
|---|---|---|
< | Links | f"{'hi':<6}" ergibt "hi " |
> | Rechts | f"{'hi':>6}" ergibt " hi" |
^ | Zentriert | f"{'hi':^6}" ergibt " hi " |
Wenn beim Zentrieren eine ungerade Anzahl von Leerzeichen bleibt, setzt die Ausrichtung im f-String das zusätzliche Leerzeichen nach rechts: f"{'hi':^7}" ergibt " hi ".
Die Breite ist ein Mindestwert. f"{'elephant':4}" ergibt weiterhin "elephant"; das Wort wird nicht abgeschnitten. Ein langer Eintrag kann daher spätere Spalten verschieben.
Ergänze ein Füllzeichen oder begrenze Text
Ein Füllzeichen steht unmittelbar vor dem Ausrichtungszeichen. f"{'hi':*^10}" ergibt "****hi****", und f"{7:0>3}" ergibt "007". Ein Füllzeichen benötigt ein Ausrichtungszeichen. f"{'':-^20}" füllt ein leeres Feld mit zwanzig Strichen.
Die Zeichenkettengenauigkeit begrenzt die Anzahl der angezeigten Zeichen:
place = "Washington"
print(f"{place:.4}") # Wash
print(f"|{place:10.4}|") # |Wash |
Die Genauigkeit begrenzt den angezeigten Text zuerst auf vier Zeichen; anschließend füllt die Breite ihn auf zehn auf. Verwende passende Breite und Genauigkeit, wenn Text innerhalb einer festen Spalte bleiben muss. Das ursprüngliche place ist weiterhin "Washington".
Erstelle eine Kassenbonzeile
item = "Apples"
qty = 3
price = 4.50
row = f"{item:<8}{qty:>4}{qty * price:>9.2f}"
print(row)
Das Ergebnis ist "Apples 3 13.50". Das Artikelfeld enthält sechs Buchstaben und zwei Leerzeichen. Das Mengenfeld fügt drei Leerzeichen vor 3 hinzu. Das Betragsfeld fügt vier Leerzeichen vor 13.50 hinzu, das fünf Zeichen hat. Zusammen belegen die Felder 21 Zeichen.
Verwende diese Breiten erneut für Brot (1 zu 2,25) und Kaffee (2 zu 11,00). Ihre Zeilen lauten "Bread 1 2.25" und "Coffee 2 22.00". Eine Summenzeile kann die ersten beiden Felder kombinieren:
print(f"{'Total':<12}{37.75:>9.2f}")
# "Total 37.75"
Das Betragsfeld beginnt an derselben Position und hat dieselbe Anzahl von Nachkommastellen, sodass die Beträge untereinander stehen.
Passe den Aufbau an die Anzeige an
Wähle Breiten, die Platz für die längsten Einträge und Abstände lassen, oder kürze Text gezielt. Eine Variable kann eine Breite liefern: Mit w = 10 füllt f"{name:<{w}}" den Wert von name auf zehn Zeichen auf.
Zeichenbasierte Spalten brauchen eine nichtproportionale Schrift, wie sie ein Terminal verwendet. Für einfaches Auffüllen außerhalb eines f-Strings verhalten sich ljust() und rjust() wie < und >. center() und ^ zentrieren beide Text, können eine ungerade Auffüllung aber unterschiedlich aufteilen: "hi".center(7) ergibt " hi ", während f"{'hi':^7}" den Wert " hi " ergibt.
Wichtige Erkenntnisse
- Die Breite legt ein Minimum fest; die Ausrichtung bestimmt, wo aufgefüllt wird.
- Das Füllzeichen steht vor dem Ausrichtungszeichen, und die Zeichenkettengenauigkeit begrenzt die angezeigten Zeichen.
- Verwende in jeder Zeile dieselben Feldbreiten und dieselbe Anzahl von Nachkommastellen.
- Wähle für zeichenbasierte Spalten eine Anzeige mit nichtproportionaler Schrift.
center()und die Zentrierung im f-String können eine ungerade Auffüllung unterschiedlich platzieren.
Zeichenketten in Python: Beispiele
1Einen Code Zeichen für Zeichen zerlegen
14 Schritte
- 1EinführungLies eine Lagerbeschriftung
Eine Lagerbeschriftung enthält Buchstaben, einen Bindestrich und Ziffern:
"Box-482". Dies ist eine Zeichenkette, und jedes Zeichen hat einen Index. Ein Programm benötigt möglicherweise den ersten Buchstaben, die letzte Ziffer oder den ganzen Zahlenabschnitt (einen Ausschnitt).Du wirst die Beschriftung erstellen, ihre Positionen aufzeichnen und ihre Teile auswählen. Verfolge bei jedem Schritt die genauen Zeichen; ein Leerzeichen oder Trennzeichen wirkt sich ebenso auf die Positionen aus wie ein Buchstabe.
- 2ErklärungTrenne Syntax von gespeichertem Text
Eine Zeichenkette ist eine geordnete Folge von Zeichen. Die äußeren Anführungszeichen teilen Python mit, wo ein Literal beginnt und endet; sie gehen nicht in seinen Wert ein.
label = "Box-482" print(len(label)) # 7Der Bindestrich ist eines der sieben Zeichen. Einfache Anführungszeichen könnten denselben Wert markieren. Du kannst auch leeren Text mit
""speichern, der die Länge null hat. - 3BeispielSetze die Beschriftung aus Teilen zusammen
Beginne mit dem Wort und einem Zahlencode:
kind = "Box" number = 482 label = kind + "-" + str(number)str(number)erzeugt"482", dann bilden die beiden Verkettungen"Box-482". Der Bindestrich erscheint, weil er als Teil angegeben wird. Ohnestr()würde versucht, eine Zeichenkette und eine ganze Zahl zu verketten, was einenTypeErrorauslöst. - 4HerausforderungZähle die Zeichen eines Werts mit einer Escape-Sequenz
Ein kurzer Hinweis ist als
notice = "A\nB!"gespeichert. Welche Länge hat er und wie viele Zeilen zeigtprint(notice)an?---reveal---
Die Länge ist
4:A, ein Zeilenumbruch,Bund!. Die Ausgabe zeigt zwei Zeilen, mitAin der ersten undB!in der zweiten. Die Escape-Sequenz wird beim Lesen des Literals verarbeitet; die Ausgabe zeigt den bereits im Wert enthaltenen Zeilenumbruch. - 5AnalogieGib jeder Position eine Nummer
Stell dir die Beschriftung als sieben nummerierte Stellen in einer Reihe vor. Die Nummerierung beginnt bei null:
Character: B o x - 4 8 2 Index: 0 1 2 3 4 5 6label[0]ergibt"B"undlabel[4]ergibt"4". Das Ergebnis ist eine einzeichenlange Zeichenkette, auch wenn es wie eine Zahl aussieht. Position7wäre die achte Stelle, die in dieser Beschriftung nicht existiert. - 6ErklärungZähle vom letzten Zeichen zurück
Negative Indizes verwenden das Ende als Bezugspunkt. Für
"Box-482"istlabel[-1]gleich"2"undlabel[-3]gleich"4".Der entsprechende nicht negative Index zu
-3istlen(label) - 3, also4. Beide wählen dasselbe Zeichen. Am Ende gibt es keine negative Nullposition:-0ist einfach0und wählt daher weiterhin das erste Zeichen. - 7HerausforderungWähle ein Zeichen aus, ohne Code auszuführen
Was ist für
code = "Tin-739"der Wert voncode[-2]? Würdecode[len(code)]das letzte Zeichen auswählen?---reveal---
code[-2]ist"3", das Zeichen direkt vor der letzten9.code[len(code)]löst einenIndexErroraus: Länge sieben bedeutet Indizes von null bis sechs. Der Ausdruck für das letzte Zeichen lautetcode[len(code) - 1]odercode[-1]. - 8TippSichere einen Zeichenzugriff ab
Eine leere Eingabe hat kein Zeichen an Index null. Setze die Längenprüfung vor den Zeichenzugriff:
if len(label) > 0 and label[0] == "B": print("Begins with B")Ist die erste Prüfung falsch, überspringt
anddie zweite. Diese Reihenfolge ist wichtig: Stündelabel[0]zuerst, würde der Zugriff bei leerer Eingabe bereits fehlschlagen, bevor Python die Längenprüfung erreichen könnte. - 9ErklärungWähle den ganzen Zahlenabschnitt aus
Ein Ausschnitt schließt seinen Start ein und seine Endgrenze aus:
label = "Box-482" number_text = label[4:7] print(number_text) # 482Die Positionen
4,5und6liefern die Ziffern. Die Endgrenze7liegt nach dem letzten Zeichen. Da die Auswahl bis zum Ende reicht, liefertlabel[4:]dasselbe Ergebnis. Es findet keine Umwandlung statt; der Ausschnitt ist weiterhin Text. - 10BeispielLass die beiden Ausschnitte aneinandergrenzen
Der linke Abschnitt endet an der Grenze, an der der Zahlenabschnitt beginnt:
left = label[:4] # "Box-" right = label[4:] # "482" print(left + right) # Box-482Die gemeinsame Grenze
4lässt die Teile ohne Lücke oder Überlappung aneinandergrenzen. Deshalb setzts[:k] + s[k:]eine Zeichenkette wieder zusammen. Mitlabel[:3]würde der Bindestrich im zusammengesetzten Ergebnis fehlen. - 11KernaussageEine Ausschnittsgrenze kann über das Ende hinausreichen
Vergleiche
label[99]mitlabel[4:99]. Der einzelne Index löst einenIndexErroraus, aber der Ausschnitt ergibt"482".Eine Ausschnittsgrenze jenseits der Zeichenkette wird auf deren Ende begrenzt.
label[99:]ergibt daher leeren Text. Das ist nützlich, um bis zu einer bestimmten Textlänge auszuwählen. Es bedeutet aber auch, dass ein falscher Ausschnitt unbemerkt weniger Zeichen als erwartet zurückgeben kann. - 12BeispielKehre nur die ausgewählten Ziffern um
Wähle zuerst die Ziffern aus und kehre dann diese neue Zeichenkette um:
digits = label[4:] backward = digits[::-1] print(backward) # 284Eine negative Schrittweite führt rückwärts. Sind beide Grenzen weggelassen, durchläuft der Ausschnitt alle Zeichen vom letzten bis zum ersten. Eine positive Schrittweite von zwei würde stattdessen jede zweite Position überspringen. Eine Schrittweite von null ist ungültig und löst einen
ValueErroraus. - 13HerausforderungErstelle eine veränderte Beschriftung
Was ergibt für
label = "Jar-916"der Ausdrucklabel[:4] + label[4:][::-1]? Erkläre, welcher Abschnitt seine Reihenfolge behält.---reveal---
Das Ergebnis ist
"Jar-619". Der erste Ausschnitt lässt"Jar-"unverändert. Der zweite wählt zuerst"916"aus, dann kehrt[::-1]nur diese Ziffern zu"619"um. Die Verkettung fügt die beiden Ergebnisse zusammen, ohne ein weiteres Trennzeichen hinzuzufügen. - 14ZusammenfassungUnterscheide Positionen und Grenzen
Verwende einen Index für ein Zeichen und einen Ausschnitt für einen Abschnitt. Positionen beginnen bei null; negative Indizes zählen vom Ende. Ein Ausschnitt lässt seine Endgrenze aus, und seine Schrittweite steuert Richtung und Abstand.
Verfolge zuerst die gespeicherten Zeichen und werte dann jede Auswahl aus, bevor du die Ergebnisse kombinierst.
2Einen maskierten Code mit einer Schleife erstellen
12 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungBehalte Ziffern und verbirg Buchstaben
- 2ErklärungBereite die laufenden Ergebnisse vor
- 3BeispielTriff für jedes Zeichen eine Entscheidung
- 4BeispielVerfolge die restlichen Durchläufe
- 5HerausforderungVerfolge eine andere Eingabe
- 6VerbindungErgänze Positionen nur bei Bedarf
- 7TippLass Platz für ein nächstes Zeichen
- 8KernaussageDie alte Zeichenkette wurde nicht verändert
- 9BeispielBehalte einen weiteren Namen für den alten Wert
- 10BeispielErsetze ein Zeichen an einer Position mit Ausschnitten
- 11HerausforderungVerfolge den Wert und seine gespeicherte Kopie
- 12ZusammenfassungVerfolge jede Variable durch die Schleife
3Eine Nachricht mit Kennzeichen lesen und validieren
16 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungVerarbeite eine kurze Anfrage
- 2BeispielEntferne die Leerraumzeichen an den Rändern
- 3ErklärungRufe Methoden auf und verkette sie
- 4HerausforderungWähle eine Operation für ein genaues Ende
- 5VerbindungVergleiche Text nach Vereinheitlichung der Groß- und Kleinschreibung
- 6ErklärungFrage, ob, wo oder wie oft
- 7BeispielFinde den Anfang des Namens
- 8BeispielFinde das Ende nach dem Anfang
- 9TippBehandle eine Position nicht als Prüfung auf Vorhandensein
- 10HerausforderungNimm ein Feld zwischen Kennzeichen heraus
- 11BeispielNimm den Text zur Platzanzahl heraus
- 12ErklärungPrüfe vor der Umwandlung
- 13HerausforderungWende dieselbe Eingaberegel an
- 14KernaussageEin Textvergleich vergleicht keine Zahlenwerte
- 15HerausforderungBehandle ein bereinigtes Feld und eine fehlgeschlagene Suche
- 16ZusammenfassungVerwende jedes Ergebnis für seinen Zweck
4Einen Datensatz in Felder und lesbaren Text umwandeln
12 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungLies einen einfachen Datensatz
- 2ErklärungTeile an einem genauen Trennzeichen auf
- 3BeispielPrüfe die Felder, bevor du sie liest
- 4BeispielRechne mit umgewandelten Werten
- 5HerausforderungErhalte einen fehlenden Wert
- 6KernaussageDas Aufteilen an Leerraumzeichen ergibt andere Teile
- 7TippBeende die Aufteilung nach der benötigten Trennung
- 8BeispielFüge Ausgabeteile mit einem Trennzeichen zusammen
- 9HerausforderungSage das Zusammenfügen mit leeren Teilen voraus
- 10VerbindungWähle Bereinigung oder genaue Rekonstruktion
- 11HerausforderungKorrigiere die Anzeige eines Datensatzes
- 12ZusammenfassungVerfolge die Datentypen im Datensatz
5Einen kleinen Kassenbon formatieren
16 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungGib einer Berechnung einen lesbaren Aufbau
- 2BeispielSetze den Betrag der Position ein
- 3HerausforderungAchte darauf, wann der Ausdruck ausgeführt wird
- 4TippHalte die Feldsyntax sichtbar
- 5ErklärungWähle zwei Nachkommastellen
- 6KernaussageRunde den tatsächlich gespeicherten Wert
- 7BeispielZeige eine Rate als Prozentangabe an
- 8HerausforderungKombiniere Gruppierung und Nachkommastellen
- 9VerbindungFülle Datums- und Zeitteile auf
- 10ErklärungReserviere die Felder des Kassenbons
- 11BeispielZähle die Leerzeichen in einer Zeile
- 12TippDie Breite kürzt einen langen Artikelnamen nicht
- 13HerausforderungLies ein aufgefülltes und zentriertes Feld
- 14HerausforderungErstelle eine zweite Kassenbonzeile
- 15VerbindungPasse die Schrift an den Aufbau an
- 16ZusammenfassungHalte Berechnung und Darstellung getrennt
Zeichenketten in Python: Übungsaufgaben
Set 1: Literale, Indizes und Ausschnitte lesen10 Übungsfragen
Frage 1 von 10
len("x\ty!")?Antwort zeigenAntwort ausblenden
x, einen Tabulator, y und !. Die äußeren Anführungszeichen und die beiden geschriebenen Symbole für \t sind keine zusätzlichen Zeichen im Wert. Würdest du die Escape-Sequenz als umgekehrten Schrägstrich und Buchstaben zählen, ergäbe sich stattdessen fünf.Frage 2 von 10
"Tag: " + str(8 * 2)?Antwort zeigenAntwort ausblenden
16, die str() in "16" umwandelt. Die Verkettung fügt sie dann nach "Tag: " hinzu. Um die geschriebenen Ziffern zu "82" zusammenzufügen, wären Zeichenketten als Operanden nötig; der Ausdruck hier multipliziert vor der Umwandlung zwei ganze Zahlen.Frage 3 von 10
r"D:\temp" nach dem Doppelpunkt?Antwort zeigenAntwort ausblenden
temp stehen bleibt. In einem gewöhnlichen Literal würde das anfängliche \t zu einem Tabulator. Die rohe Schreibweise fügt der gespeicherten Zeichenkette keinen zweiten umgekehrten Schrägstrich hinzu; der eine geschriebene Schrägstrich bleibt ein Zeichen.Frage 4 von 10
code = "R7K2" der Wert von code[-2]?Antwort zeigenAntwort ausblenden
-1 wählt "2" und -2 wählt "K". Der Wert ist eine einzeichenlange Zeichenkette. Würdest du zwei Zeichen von links zählen, würdest du "7" auswählen, aber das Minuszeichen macht das Ende der Zeichenkette zum Ausgangspunkt.Frage 5 von 10
word = "orbit" der Ausdruck word[len(word) // 2] zurück?Antwort zeigenAntwort ausblenden
2. Die Indizes 0, 1 und 2 wählen o, r und b aus, sodass "b" das mittlere Zeichen ist. Ein TypeError würde bei einer Gleitkommazahl als Index auftreten, aber // erzeugt hier eine ganze Zahl.Frage 6 von 10
Was geschieht, wenn dieser Code mit line = "" ausgeführt wird?
if len(line) > 0 and line[0] == ";":
print("Skip")
Antwort zeigenAntwort ausblenden
and den Zeichenzugriff und der Körper wird nicht ausgeführt. Die leere Zeichenkette würde einen IndexError verursachen, wenn line[0] ausgewertet würde. Hier verhindert die Reihenfolge der Prüfungen, dass der Index bei leerer Eingabe verwendet wird.Frage 7 von 10
"notebook"[2:5]?Antwort zeigenAntwort ausblenden
2, 3 und 4 aus: t, e und b. Der Endindex 5 ist ausgeschlossen, daher erscheint das dortige o nicht. Mit diesem Zeichen ergäbe sich "tebo"; dazu müsste die Endgrenze als eingeschlossen statt als erste ausgelassene Position behandelt werden.Frage 8 von 10
"map"[1:50]?Antwort zeigenAntwort ausblenden
1 und reicht bis zum Ende, weil die zu große Endgrenze auf das Ende begrenzt wird. Dadurch bleiben a und p erhalten und ergeben "ap". Ein Zugriff auf ein einzelnes Zeichen wie "map"[50] würde einen IndexError auslösen, aber Ausschnittsgrenzen können über die vorhandenen Zeichen hinausreichen.Frage 9 von 10
"0123456789"[1:8:3] zurück?Antwort zeigenAntwort ausblenden
1 und gehe jeweils drei Positionen weiter: 1, 4 und 7. Die nächste Position wäre 10 und läge damit jenseits der ausgeschlossenen Endgrenze 8. "1357" verwendet eine Schrittweite von zwei; das dritte Ausschnittsargument ist der Abstand zwischen den ausgewählten Positionen, nicht die Anzahl der gewünschten Zeichen.Frage 10 von 10
s = "red-blue" der Wert von s[-4:][::-1] + s[:3]?Antwort zeigenAntwort ausblenden
"blue"; die Umkehrung dieses Ausschnitts ergibt "eulb". Der Anfangsteil s[:3] ist "red", daher ergibt die Verkettung "eulbred". Der Bindestrich bei Index 3 gehört zu keinem der beiden ausgewählten Ausschnitte und wird beim Zusammenfügen der Zeichenketten nicht automatisch eingefügt.Set 2: Schleifen und neue Zeichenkettenwerte nachvollziehen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
for ch in "a b!": ausgeführt?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Was wird ausgegeben?
total = 0
for ch in "Route 68":
if ch.isdecimal():
total += int(ch)
print(total)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Was wird ausgegeben?
for ch in "Cab 53A":
if ch.isdigit():
print(ch)
break
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Was wird ausgegeben?
for i, ch in enumerate("lamp"):
if i % 2 == 1:
print(ch, end="")
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Welcher Wert wird ausgegeben?
s = "aaabb"
pairs = 0
for i in range(len(s) - 1):
if s[i] == s[i + 1]:
pairs += 1
print(pairs)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Welcher Text wird ausgegeben?
s = "north"
i = len(s) - 1
result = ""
while i >= 0:
result += s[i]
i -= 2
print(result)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Was enthält b nach diesem Code?
a = "pine"
b = a
a = a.upper()
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
s = "stone" der Ausdruck s[:2] + "X" + s[3:]?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Welches Wertepaar wird ausgegeben?
word = "muse"
result = ""
for ch in word:
if ch in "aeiou":
result = ch.upper() + result
else:
result = ch + result
print(word, result)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Was gibt dieser Code aus?
s = " west "
s.strip()
s = s + "!"
print(len(s))
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 3: Text bereinigen, durchsuchen und validieren10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
" Go Home ".strip().lower() zurück?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
"test.txt".rstrip(".txt") zurück?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
"A-a-a".replace("a", "x", 1).lower()?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
"cocoa".rfind("co")?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Was wird ausgegeben?
s = "label"
p = s.find(":")
print(s[p:])
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Welcher Text wird herausgenommen?
s = "Item [K9] ready [Q2]"
a = s.find("[")
b = s.find("]", a)
result = s[a + 1:b]
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
"abababa".count("aba")?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
s = raw.strip() und danach s.isdecimal() and int(s) > 0. Besteht die ursprüngliche Eingabe " 08 " die Prüfung und welche ganze Zahl stellt sie dar?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
a = " Cedar " und b = "cedar" aus a == b und a.strip().casefold() == b.strip().casefold()?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
"24" < "7" und int("24") < int("7")?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 4: Datensätze aufteilen und Text wieder zusammensetzen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
len(" one\ttwo three ".split())?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
"A||C|".split("|") zurück?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
"red;blue".split("; ")?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Was wird ausgegeben?
parts = "Mina;4;6".split(";")
total = int(parts[1]) + int(parts[2])
print(f"{parts[0]}:{total}")
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
"mode=fast=quiet".split("=", 1)[1]?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
"status".partition(":") zurück?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
" / ".join("ab")?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
"-".join("x::z:".split(":"))?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
result = " ".join(" bright\n blue sky ".split()) gespeichert?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
": ".join(map(str, [6, 11]))?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 5: Lesbare Werte und Spalten erstellen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
name = "Luca" der Ausdruck f"Hi, {name.upper()}!"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Welcher Text wird ausgegeben?
n = 4
label = f"{{n}}={n + 2}"
n = 9
print(label)
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
f"{4826.5:,.2f}"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
f"{0.0375:.1%}"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
n = 0.125 aus f"{n:.2f}" und n == 0.125?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
month = 11, day = 6, year = 2028, hour = 7 und minute = 3 der Ausdruck f"{month:02d}/{day:02d}/{year} {hour}:{minute:02d}"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
f"|{'owl':>5}|"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
name = "seahorse" der Ausdruck f"{name:6.4}"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
item = "Tea", qty = 2 und price = 3.75 der Wert von f"{item:<5}{qty:>2}{qty * price:>7.2f}"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
f"{'otter':3}"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe
Schlüsselbegriffe
A
Akkumulator
"" beginnt, kann nur Zeichen sammeln, die keine Leerzeichen sind, um aus "a b c" den Wert "abc" zu erstellen.Auffüllen
"5".zfill(3) erzeugt "005", während das bereits längere "1234" bei Breite drei unverändert bleibt.Auffüllen mit Nullen
f"{4:02d}" zeigt "04" an, sodass eine einstellige Minute ein zweistelliges Feld ausfüllt.Ausdrucksfeld
f"Total: {3 * 4}" berechnet zwölf, bevor es das Ergebnis nach der Bezeichnung einsetzt.Ausrichtung
< setzt ihn nach links, > nach rechts und ^ zentriert ihn.f"{'hi':>5}" setzt drei Leerzeichen vor das Wort; eine Linksausrichtung setzt sie dahinter.Ausschnitt
"window"[1:4] gibt "ind" zurück: Er wählt die Positionen eins bis drei aus und schließt Position vier aus.Ausschnittsgrenze
"garden"[:3] ist die Ausschnittsgrenze drei die ausgeschlossene Endgrenze, sodass d ausgelassen wird und das Ergebnis "gar" ist.B
Bereinigung von Leerraumzeichen
" ".join(text.split()) entfernt Leerraumzeichen an den Enden und ersetzt innere Folgen von Leerraumzeichen durch ein einzelnes gewöhnliches Leerzeichen." ".join(text.split()) macht aus " blue\n sky " den einheitlich mit Leerzeichen versehenen Text "blue sky".binäre Approximation
2.675 liegt geringfügig darunter, sodass die Formatierung auf zwei Nachkommastellen "2.67" ergibt.break
break verlässt die aktuelle Schleife sofort. Damit kann eine Zeichensuche nach der Verarbeitung des ersten passenden Zeichens beendet werden."Zone 81" kann 8 ausgeben und break ausführen, sodass die spätere 1 unverarbeitet bleibt.C
Codepunktumwandlung
ord(), um die Unicode-Zahl eines Zeichens zu erhalten, und chr(), um das Zeichen zu einer solchen Zahl zu erhalten.ord("A") ergibt 65, und die umgekehrte Umwandlung mit chr(65) ergibt "A".D
Dezimalziffernprüfung
isdecimal() akzeptiert nicht leere Zeichenketten aus Dezimalziffern und lehnt Vorzeichen, Dezimalpunkte und Leerzeichen ab."007", das in die ganze Zahl sieben umgewandelt wird.Dreiteilung
"color=blue" an "=" ist ("color", "=", "blue"); das Trennzeichen bleibt in der Mitte erhalten.Durchlaufen einer Zeichenkette
for-Schleife oder einer while-Schleife mit Index."go!" werden zuerst g, dann o und dann ! besucht, sodass für jedes Zeichen eine eigene Entscheidung möglich ist.E
Elementzuweisung
word[1] = "x" löst bei einer Zeichenkette einen TypeError aus, selbst wenn Index eins eine gültige Position ist.Entfernen von Randzeichen
"..hello!!" mit der Zeichenmenge ".!" erhält "hello" und lässt den Text im Inneren unverändert.enumerate()
enumerate() liefert jedes Element einer Sequenz zusammen mit seinem Index. So kann eine Schleife beide ohne gesonderten Zugriff verwenden.enumerate("sun") erhält Index-Zeichen-Paare, beginnend mit 0, "s" und endend mit 2, "n".erneute Zuweisung
a den Wert "red" enthält, lässt die erneute Zuweisung mit a += "!" die Variable a auf "red!" verweisen, während eine andere Variable weiterhin "red" enthalten kann.Escape-Sequenz
"up\ndown" speichert die Escape-Sequenz \n einen Zeilenumbruch, sodass die Ausgabe die Wörter in zwei Zeilen setzt.F
f-String
f gekennzeichnetes Zeichenkettenliteral, das Ausdrücke in Feldern mit geschweiften Klammern auswertet und ihre Werte in den entstehenden Text einsetzt.count = 7 erstellt der f-String f"Found {count}" den Wert "Found 7" ohne ausdrückliche Umwandlung der Zahl in Text.Feldbreite
"cat" zwei Leerzeichen, aber die Breite zwei erhält weiterhin das ganze Wort.Feldumwandlung
int() umgewandelt wird."12" eine ganze Zahl, bevor er numerisch zu fünf addiert werden kann.Festkommaformat
f, um eine Zahl mit einer gewählten Anzahl von Nachkommastellen anzuzeigen. Bei Bedarf wird gerundet und es werden abschließende Nullen ergänzt..3f zeigt die ganze Zahl fünf als "5.000" mit genau drei Nachkommastellen an.find()
find() gibt den Anfangsindex der ersten passenden Teilzeichenkette oder -1 zurück, wenn der gesuchte Text nicht vorkommt."lemon".find("mo") gibt zwei zurück, während "lemon".find("xy") bei fehlendem Treffer minus eins zurückgibt.Formatangabe
f"{8.5:.2f}" wählt die Formatangabe .2f zwei Nachkommastellen und erzeugt "8.50" für die Anzeige.Füllzeichen
f"{'ok':*^6}" ergibt "**ok**" und füllt ungenutzte Positionen um den Text auf.G
Groß- und Kleinschreibung für Vergleiche vereinheitlichen
"Straße" als auch aus "STRASSE" den Wert "strasse", sodass die Schreibweisen als gleich verglichen werden können.I
Index
label = "desk" wählt Index 2 das Zeichen "s" aus, da die Positionen mit d bei null beginnen.IndexError
"cup"[3] löst einen IndexError aus, da seine drei Zeichen die Positionen null bis zwei belegen.K
Kurzschlussauswertung
s.isdecimal() and int(s) > 0 überspringt die Umwandlung, wenn die Zeichenprüfung fehlschlägt.L
leere Trennzeichenkette
join() verwendet wird, um Teile ohne zusätzliche Zeichen dazwischen zusammenzusetzen."".join(["a", "b", "c"]) ergibt "abc" und erhält dabei die Reihenfolge der Teile.leeres Feld
"a;;c" an ";" erhält ein leeres Feld an der zweiten Position und bewahrt so einen fehlenden Datensatzwert.Leerraumzeichen
" \t" enthält nur Leerraumzeichen. Werden sie entfernt, bleiben keine Zeichen im Text.lexikografische Reihenfolge
"19" vor "3", weil ihre ersten unterschiedlichen Zeichen den Vergleich entscheiden.Liste
"oak,elm" an einem Komma enthält die Liste zwei Elemente, und Index eins wählt die Zeichenkette "elm" aus.M
maximale Anzahl der Aufteilungen
split() oder rsplit() ausführt, und lässt den Rest in einem nicht weiter aufgeteilten Teil zusammen."a=b=c" von links in "a" und "b=c" getrennt; spätere Gleichheitszeichen bleiben erhalten.Methodenverkettung
" OK ".strip().lower() gibt zuerst "OK" zurück und wandelt dieses Ergebnis dann in "ok" um.N
negativer Index
-1 das letzte und -len(text) das erste Zeichen."cloud" wählt der negative Index -1 das Zeichen "d" aus, während -2 das davorstehende Zeichen "u" auswählt.nicht überlappende Treffer
count() verwendete Trefferregel."aaaa".count("aa") verwenden unterschiedliche Zeichenpositionen, daher ist die Anzahl zwei.nichtproportionale Schrift
P
Palindrom
"radar" besteht word == word[::-1]; bei gemischter Groß- und Kleinschreibung ist eine Bereinigung nötig, wenn dieser Unterschied ignoriert werden soll.Prozentformat
%, um einen Bruchteil für die Anzeige mit 100 zu multiplizieren und ein Prozentzeichen anzufügen. Die Anzahl der Nachkommastellen kann angegeben werden..0% zeigt 0.18 als "18%" an; die Übergabe von achtzehn würde den Wert ein zweites Mal skalieren.R
removeprefix()
removeprefix() entfernt einen genau passenden Anfang aus einer Zeichenkette und gibt den ursprünglichen Text zurück, wenn dieser Anfang fehlt."pretest".removeprefix("pre") ergibt "test", während ein fehlender Anfangsteil den Text unverändert lässt.removesuffix()
removesuffix() entfernt ein genau passendes Ende aus einer Zeichenkette und erhält andere Zeichen, die beim Entfernen von Randzeichen möglicherweise entfernt würden."report.txt".removesuffix(".txt") erhält "report" einschließlich des letzten t im Grundnamen.rfind()
rfind() gibt den Anfangsindex der letzten passenden Teilzeichenkette zurück. Obwohl sie von rechts sucht, verwendet sie die Positionen der ganzen Zeichenkette."a-b-c".rfind("-") gibt drei zurück und findet den letzten Bindestrich mit einer von links gezählten Position.rohes Zeichenkettenliteral
r, das umgekehrte Schrägstriche als wörtliche Zeichen beibehält, statt gewöhnliche Escape-Sequenzen zu verarbeiten.r"C:\new" behält den umgekehrten Schrägstrich vor new bei und verhindert so, dass dieses Paar zu einem Zeilenumbruch wird.Rückgabewert
text.upper() ist Text in Großbuchstaben; durch die Zuweisung an text bleibt er für eine spätere Verwendung erhalten.Rundung zur geraden Ziffer
0.125 und 0.375 bei zwei Nachkommastellen als "0.12" und "0.38" erscheinen.S
Schrittweite eines Ausschnitts
"abcdef"[::2] wählt die Indizes null, zwei und vier aus und erzeugt "ace".str.format()
str.format() füllt Felder in geschweiften Klammern innerhalb einer Zeichenkette mit ihren Argumenten. Die Felder werden nach Reihenfolge oder einem ausdrücklichen Argumentindex ausgewählt."{1}, {0}".format("Ada", "Lovelace") verwendet str.format(), um das zweite Argument vor das erste zu setzen.Suchstartposition
"cocoa".find("co", 1) überspringt den Treffer bei null und findet den bei zwei.T
Tausendergruppierung
f"{7654321:,}" zeigt "7,654,321" an und trennt jede Gruppe von drei Ziffern.Teilzeichenkette
"light" ist eine Teilzeichenkette von "daylight", "dyl" dagegen nicht, weil diese Buchstaben nicht aufeinanderfolgen.Trennzeichen
", " entspricht einem Komma mit folgendem Leerzeichen und teilt daher die Zeichenkette "oak,elm" nicht auf.U
Um-eins-Fehler
text[len(text)] führt zu einem Zugriff hinter dem Ende; durch Subtraktion von eins erhältst du den Index des letzten Zeichens.Umwandlung mit map()
map() wendet eine Funktion auf jedes Eingabeelement an, sodass str die von join() benötigten Zeichenkettenteile liefern kann.map() in ", ".join(map(str, [3, 8])) liefert Zeichenketten, bevor sie zu "3, 8" zusammengefügt werden.Unicode-Codepunkt
len() zählt sie."👍🏽" enthält zwei Unicode-Codepunkte, daher beträgt seine Länge als Python-Zeichenkette trotz seines Aussehens zwei.Unveränderlichkeit
name[0] = "B" fehlschlagen, während name = "B" + name[1:] erfolgreich neuen Text erstellt.V
Vergleich mit Beachtung der Groß- und Kleinschreibung
"Ready" == "ready" falsch, solange die Groß- und Kleinschreibung beider Werte nicht vereinheitlicht wurde.Verkettung
"rain" + "coat" ergibt "raincoat"; für ein zusätzliches Leerzeichen ist ein Teil erforderlich, der eines enthält.W
wörtliche geschweifte Klammer
f"{{open}}" wird { vor open angezeigt und eine schließende geschweifte Klammer danach, ohne Python aufzufordern, diesen Namen auszuwerten.Z
Zähler
"Bay 27" wird bei 2 und 7 erhöht und endet nach der Schleife mit zwei Treffern.Zeichenkette
str. Sie dient dazu, Text wie Namen, Nachrichten und Codes zu speichern."Hello, Nora" speichert die Begrüßung, ihr Komma und ihr Leerzeichen als Teile eines geordneten Textwerts.Zeichenkettengenauigkeit
f"{'sunshine':6.3}" zeigt "sun" und drei Leerzeichen an, ohne das ursprüngliche Wort zu ändern.Zeichenkettenliteral
"open" und 'open' verwenden unterschiedliche äußere Anführungszeichen, speichern aber dieselben vier Zeichen.Zeichenkettenmethode
"hello".upper() gibt "HELLO" zurück; ohne die Klammern wird sie nicht aufgerufen.Zeichenprüfung
isalpha() lehnen auch leere Zeichenketten ab."lake9".isalnum() ist wahr, während das Leerzeichen in "lake 9" diese Version durchfallen lässt.Zugehörigkeitsprüfung
in oder not in, ob eine Teilzeichenkette vorkommt, und gibt einen booleschen Wert zurück, ohne ihre Position anzugeben."ice" in "spice" ist wahr, während das großgeschriebene "Ice" nicht zu demselben Text passt.Zusammenfügen
["home", "nora"] mit dem Trennzeichen "/" erzeugt "home/nora", mit einem Schrägstrich zwischen den Teilen.Über diese Einheit
Erstelle deine eigenen Lernmaterialien
Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.