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