Grundlagen G08 (Schulabgleich 11.0)

Textverarbeitung & Strings 🔤✨

Lerne, wie du Texte zerlegst, bereinigst, durchsuchst und formatierst – mit den mächtigen String-Methoden von Python.

📂 Dateien dieser Einheit:
📄 aufgabe.py (Startercode) 🧪 test_aufgabe.py (Tests) 💡 musterloesung.py (Lösung) 📖 README.md

1. 🏛️ Die Stempel-Analogie: Strings sind unveränderlich!

In Python sind Strings (str) unveränderlich (immutable). Das bedeutet: Sobald ein String erzeugt wurde, kann kein einzelner Buchstabe mehr ausgetauscht werden!

🖨️ Die Stempel- & Druck-Analogie:

Stell dir einen String wie ein gedrucktes Dokument vor. Wenn du text.upper() oder text.replace("a", "b") aufrufst, wird nicht der Buchstabe auf dem Papier radiert. Stattdessen nimmt Python ein frisches, neues Blatt Papier und stempelt den modifizierten Text darauf!

Python: Immutable Strings
name = "python"

# ❌ Falsch: Einzelnes Zeichen überschreiben geht nicht!
# name[0] = "P"  -> TypeError: 'str' object does not support item assignment

# ✅ Richtig: Die Methode liefert einen NEUEN String zurück, den wir neu zuweisen:
name = name.capitalize()  # name ist jetzt "Python"

2. 🧰 Das große String-Methoden Cheat-Sheet

Hier siehst du die wichtigsten Methoden für deine tägliche Textverarbeitung im Überblick:

A. Groß- & Kleinschreibung

t = "hallo welt"
print(t.upper())       # -> "HALLO WELT" (alles GROSS)
print(t.lower())       # -> "hallo welt" (alles klein)
print(t.capitalize())  # -> "Hallo welt" (nur erstes Zeichen groß)
print(t.title())       # -> "Hallo Welt" (jedes Wort groß)

B. Leerzeichen bereinigen (.strip)

roh = "   max_mustermann \n  "
print(roh.strip())     # -> "max_mustermann" (entfernt Leerzeichen & Umbrüche an beiden Enden)
print(roh.lstrip())    # -> entfernt nur links
print(roh.rstrip())    # -> entfernt nur rechts

C. Suchen, Zählen & Ersetzen

satz = "Python ist super und Python macht Spaß"

# Ersetzen:
neu = satz.replace("Python", "Coding")  # Ersetzt alle Vorkommen

# Zählen & Suchen:
print(satz.count("Python"))      # -> 2
print(satz.find("super"))        # -> Index 11 (-1 falls nicht vorhanden)
print(satz.startswith("Python")) # -> True
print(satz.endswith("Spaß"))    # -> True

D. Zerlegen (.split) & Zusammenfügen (.join)

# 1. An Trennzeichen zerlegen:
csv = "Anna;17;Wien"
spalten = csv.split(";")         # -> ["Anna", "17", "Wien"]

# 2. Ohne Parameter zerlegt .split() an beliebigen Whitespaces:
woerter = "  Python   macht   Spaß  ".split()
print(woerter)                 # -> ["Python", "macht", "Spaß"]

# 3. Liste wieder zu einem formatierten String verknüpfen:
liste = ["Rot", "Grün", "Blau"]
farben_text = ", ".join(liste)  # -> "Rot, Grün, Blau"

3. 🌟 Praxisbeispiel: Palindrom & Text-Bereinigung

Ein Palindrom ist ein Text, der vorwärts wie rückwärts identisch ist (z.B. "Dreh mal am Herd"). Mit String-Methoden und Slicing ist die Prüfung ein Kinderspiel:

Python: Palindrom-Prüfer
def pruefe_palindrom(text):
    # 1. Alles in Kleinbuchstaben umwandeln:
    sauber = text.lower()
    # 2. Leerzeichen entfernen:
    sauber = sauber.replace(" ", "")
    # 3. Mit der Umkehrung (Slicing [::-1]) vergleichen:
    return sauber == sauber[::-1]

print(pruefe_palindrom("Anna"))             # -> True
print(pruefe_palindrom("Dreh mal am Herd")) # -> True
print(pruefe_palindrom("Python"))           # -> False

4. 🎯 Deine Aufgaben in aufgabe.py

Öffne die Datei aufgabe.py und löse die 5 Aufgaben:

💡 Lösungshinweise (Aufklappen bei Bedarf)

🔍 Tipp zu TODO 3 (Benutzernamen bereinigen)
def bereinige_benutzernamen(name):
    return name.strip().lower().replace(" ", "_")
🔍 Tipp zu TODO 5 (Kreditkarte maskieren)
def maskiere_kreditkarte(nummer):
    if len(nummer) <= 4:
        return nummer
    return "*" * (len(nummer) - 4) + nummer[-4:]

5. 🧪 Lösung überprüfen

Führe im Terminal folgenden Befehl aus:

Terminal
python3 test_aufgabe.py