Beispielarbeiten · Code & Fehler
Code-Reparatur: Ein CSV-Import, der Beträge falsch liest
Ein Python-Skript las „1.234,50“ aus einem deutschen Kassenexport als 1,2345. Hier stehen Ursache, Reparatur und der Test, der den Fehler künftig festhält.
Beispielarbeit, kein Kundenauftrag. Der Betrieb und alle Zahlen sind erfunden, damit du siehst, wie die Arbeit aussieht, bevor du etwas in Auftrag gibst.
Das Symptom
Die Monatssumme aus dem Kassenexport war viel zu klein. Einzelne Zeilen fehlten ganz: das Skript brach bei Beträgen über 999 Euro ab oder las sie als Kommazahl.
Die Ursache
Der Export schreibt Beträge im deutschen Format, mit Punkt als Tausender- und Komma als Dezimaltrenner. Das Skript ersetzte nur das Komma durch einen Punkt. Aus „1.234,50“ wurde „1.234.50“, und das ist keine Zahl.
Vorher
def betrag(text):
return float(text.replace(",", ".")) # "1.234,50" -> "1.234.50" -> Fehler oder falscher Wert
Nachher
def betrag(text: str) -> float:
"""Deutsches Format aus dem Kassenexport: Punkt = Tausender, Komma = Dezimal."""
roh = text.strip().replace("\u00a0", "").replace(" €", "")
if "," in roh:
roh = roh.replace(".", "").replace(",", ".")
return round(float(roh), 2)
Der Test, der den Fehler festhält
def test_deutsche_betraege():
assert betrag("1.234,50") == 1234.50
assert betrag("0,99") == 0.99
assert betrag("12,00 €") == 12.00
assert betrag("250") == 250.00
Geliefert wird beides: die Reparatur und der Test. Kommt der Fehler durch eine spätere Änderung zurück, schlägt der Test an, bevor falsche Zahlen in der Buchhaltung landen.
So etwas für deinen Betrieb?
Beschreib kurz, was du brauchst. Du bekommst einen Festpreis, bevor ich anfange; ohne dein Ja passiert nichts.