3.3.1. Suchen
Zeichen in Zeichenketten suchen
In einer Zeichenkette (String) kann es erforderlich sein, ein Zeichen zu suchen.
Dabei kann das Ergebnis der Suche sein, dass das gesuchte Zeichen:
- in der Zeichenkette enthalten ist
- nicht in der Zeichenkette enthalten ist
Typisch für das Suchen ist, sobald das Zeichen in der Zeichenkette gefunden wird, ist das Suchen erfolgreich und zu Ende.
- Unbeachtet bleibt, ob das Zeichen danach nochmals in der Zeichenkette vorkommt.
- Es ist eine andere Frage, wie viele Mal das Zeichen in der Zeichenkette zu finden ist.
Variablen können Werte des Datentyps »str« zugewiesen werden. Die Werte werden
Zeichenketten (Strings) genannt.
- Zeichenketten werden in einfache oder doppelte Anführungzeichen gesetzt, wie zum Beispiel 'Python' oder "Python".
-
Ausgaben erfolgen stets als Zeichenketten:
zahl = 10
Ausgabe im f-String »f“{xzahl} ist eine Ganzzahl“« → "10 ist eine Ganzzahl" -
Zeichenketten können miteinander verbinden werden:
wort1 = "Python
zeichen = " "
wort2 = "lernen"
satz = wort1 + zeichen + wort2 → "Python lernen"
oder
satz = " ".join([wort1, wort2]) → "Python lernen" (durch " " wird zwischen die Zeichenketten wort1 und wort2 das Leerzeichen eingefügt) -
gruss = "Guten Tag!"
laenge = len(gruss) → 10
gruss[0] → G
gruss[1] → u
…
gruss[9] → !
Wichtig: Die indizierung der Zeichen einer Zeichenkette beginnt stets mit 0.
Die Zeichenkette "Guten Tag!" besteht aus 10 Zeichen mit den Nummern 0 bis 9. -
Eine Zeichenkette in eine Liste überführen:
liste = list(gruss) → ['G', 'u', 't', 'e', 'n', ' ', 'T', 'a', 'g', '!']
liste[0] → G
liste[1] → u
…
liste[9] → !
Wichtig: Auch die indizierung der Elemente einer Liste beginnt stets mit 0.
Die Liste ['G', 'u', 't', 'e', 'n', ' ', 'T', 'a', 'g', '!'] besteht aus 10 Elementen mit den Nummern 0 bis 9. -
Typumwandlung (Type Casting): mit den Funktionen »int()«, »float()«,
»list()«, »join()« und »str()«:
int("256") → Ganzzahl 256
float("1.5e-2") → Gleitkommazahl 0.015
list("Python") → Liste ['P', 'y', 't', 'h', 'o', 'n']
"".join(['P', 'y', 't', 'h', 'o', 'n']) → "Python" (diesmal "" ohne Leerzeichen)
str(13.7) → die Gleitkommazahl 13.7 wird in die Zeichenkette "13.7" umgewandelt
Programm »zeichensuche,py«
Das Programm besteht aus zwei Teilen:
- der grafischen Benutzeroberfläche – dem Hauptfenster mit Widgets
- der Callback-Funktion »suchen«
Zum Suchen von Zeichen in Zeichenketten stellt Python aus dem Modul »re« die Methode »search()« zur Verfügung. Die Methode wird in der Callback-Funktion »suchen« angewandt.
import tkinter as tk
import re
# Callback-Funktion
def suchen():
zeichenkette=entry1.get()
zeichen=entry2.get()
if len(zeichen)==1:
gefunden=re.search(zeichen, zeichenkette)
if gefunden:
label3.config(\
text=f"Das {zeichen} gefunden.")
else:
label3.config(\
text=f"Das {zeichen} nicht gefunden.")
else:
label3.config(text="Falsche Eingabe!")
entry2.delete(0, tk.END)
# grafische Oberfläche
root = tk.Tk()
root.title("Zeichen in Zeichenkette suchen")
root.geometry("400x320")
# Widgets
label1=tk.Label(root,\
text="Gib eine Zeichenkette ein:")
entry1=tk.Entry(root, width=20)
label2=tk.Label(root,\
text="Gib das gesuchte Zeichen ein:")
entry2=tk.Entry(root, width=2)
button1=tk.Button(root, text="Suchen",\
command=suchen)
label3=tk.Label(root, text="")
button2=tk.Button(root, text="Programm beenden",\
command=root.destroy)
label1.pack(pady=10)
entry1.pack(pady=10)
label2.pack(pady=10)
entry2.pack(pady=10)
button1.pack(pady=10)
label3.pack(pady=10)
button2.pack()
root.mainloop()
| 2. Zeile |
Das Modul »re« wird in das Programm eingebunden.
|
| 5. bis 18. Zeile | Die Callback-Funktion »suchen« wird deklariert. |
| 6. Zeile | Die Variable »zeichenkette« bekommt die Benutzereingabe als Wert zugewiesen. |
| 7. Zeile | Die Variable »zeichen« bekommt die Benutzereingabe als Wert zugewiesen. |
| 8. bis 17. Zeile | Geprüft wird, ob der Benutzer genau ein Zeichen eingegeben hat. |
| 9. Zeile | Die Methode »search« des Moduls »re« sucht in der Zeichenkette nach dem Zeichen. |
| 10. bis 15. Zeile | Das Ergebnis der Suche der Methode »search« wird in f-Strings ausgegeben. |
| 18. Zeile | Der Inhalt des zweiten Eingabefensters wird gelöscht. |
In der Abbildung 1 und 2 sind Ausgaben des Programms zu sehen.
Aufgabe A24
Implementiere das Programm »zeichensuche.py« am Computer.
Führe das Programm u. a. mit folgenden Eingaben aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht:
- Zeichen "m"
- Zeichen "t"
- Zeichen "b"
- Zeichen "ik"