Sparkassen csv bereinigen
Verfasst: Dienstag 12. Oktober 2004, 13:07
Hallo,
aus der Sparkassen Online-Kontoführung kann man die Kontobewegungen als *csv herunterladen.
Leider befinden sich im Verwendungszweck Zeilenumbrüche, die die csv-Struktur durcheinander bringen:
<edit>Beispiel für Rohdaten überarbeited</edit>
Eben diese überflüssigen Zeilenumbrüche sollen entfernt werden:
Mir ist klar, dieser Code läuft so nur auf Linux . Die Plattformunabhängigkeit kommt erst später, da ich mich damit noch nicht beschäftigt habe.
Das Pythonmodul für csv hat mich wegen mangelnder Unterstützung von Umlauten nicht weiter gebracht.
Meine Fragen gelten der while-Schleife:
1. Durch das Zurrücksetzen des Zählindexes "i" im elif- und else-Zweig habe ich da mir nicht so etwas wie ein "goto" eingebaut oder ist das eine normale Herangehensweise? Wäre hier Rekursion angebrachter?
2. In der 1. Zeile der while-Schleife habe ich zwei replace() und ein strip() hintereinander geschaltet, wie hättet ihr das gelöst - ich finde irgendwie sieht das nicht gesund aus? Oder ist das nur so ein Gefühl von mir?
Sebastian
aus der Sparkassen Online-Kontoführung kann man die Kontobewegungen als *csv herunterladen.
Leider befinden sich im Verwendungszweck Zeilenumbrüche, die die csv-Struktur durcheinander bringen:
Code: Alles auswählen
"Buchungstag";"Verwendungszweck";"Begünstigter/Zahlungspflichtiger";"Kontonummer";"BLZ";"Betrag";"Währung";"Info"
"13.04";"08.04/21.39UHR FooOrt";"GA NR000041238 BLZ43059991 3";"";"43059991";"-30,00";"Dollar";"Umsatz gebucht"
"02.04";"31.03/16.38UHR SPK.Foo G90
EUR00000020,00";"GA NR00001147 BLZ44050199 3";"9000411008";"44050199";"-20,00";"Dollar";"Umsatz gebucht"
"01.04";"UNTERHALT";"Foo, Bar";"123456789";"43059991";"18,00";"Dollar";"Umsatz gebucht"
Eben diese überflüssigen Zeilenumbrüche sollen entfernt werden:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso8859-15 -*-
Eingabe_Datei= file('/home/sabba/in/test-umsatz.csv', 'r')
Ausgabe_Datei= file('/home/sabba/in/ausgabe.csv', 'a')
ZeilenListe= Eingabe_Datei.readlines()
zaehler = len(ZeilenListe)
print "Anzahl der Zeilen in der Liste: ", zaehler
i=0
while i < zaehler :
ZeilenListe[i] = ZeilenListe[i].replace( '\n' , '' ).replace( '";"' , '\t').strip('"')
if ZeilenListe[i].endswith('Umsatz gebucht'):
print "OK Zeile:\t",i+1, " --> ", ZeilenListe[i]
elif ZeilenListe[i].endswith('hrung\tInfo'):
del ZeilenListe[i]
zaehler = len(ZeilenListe)
i=i-1
else:
print "False Zeile:\t",i+1, " --> ", ZeilenListe[i]
ZeilenListe[i] = TempString3=ZeilenListe[i] +" " + ZeilenListe[i+1]
print "Korr. Zeile:\t", i+1, " --> ", ZeilenListe[i]
del ZeilenListe[i+1]
zaehler = len(ZeilenListe)
i=i-1
i = i+1 #while ende
for i in range(len(ZeilenListe)):
Ausgabe_Datei.write(ZeilenListe[i] + "\n")
Eingabe_Datei.close()
Ausgabe_Datei.close()
Das Pythonmodul für csv hat mich wegen mangelnder Unterstützung von Umlauten nicht weiter gebracht.
Meine Fragen gelten der while-Schleife:
1. Durch das Zurrücksetzen des Zählindexes "i" im elif- und else-Zweig habe ich da mir nicht so etwas wie ein "goto" eingebaut oder ist das eine normale Herangehensweise? Wäre hier Rekursion angebrachter?
2. In der 1. Zeile der while-Schleife habe ich zwei replace() und ein strip() hintereinander geschaltet, wie hättet ihr das gelöst - ich finde irgendwie sieht das nicht gesund aus? Oder ist das nur so ein Gefühl von mir?
Sebastian