Jump to content
ZappBrannigan

Python Skript zum Einlesen von Comdirect Wertpapierabrechnungen

Recommended Posts

shadow
Posted

Ich werd noch IREE mit dem Unicode ... hin her hin !????

Also wenn ich die zweite Zeile rausnehme ist das doch eigentlich Sch.... weil dann ist es doch nicht festgeschrieben und es kann irgend eine Codepage sein !? Also drinlassen !?

Ich geb mir mühe dein Programm zu demolieren ;)

 

also irgendetwas mag das verdammte Workbook nicht beim close !? Ich bekomme aber nicht raus was !?

Da die Workbookseiten immer angelegt werden und die Datei neu erstllt wird dürfte das mit der CMD Schleife unter Windows eigentlich nicht funktionieren !? Deswegen hab ich das jetzt mit eingebaut nur halt immer wieder irgendwelche Unicode Probleme die mich ganz Kirre machen

 

Traceback (most recent call last):

File "C:\Users\internet\Documents\python\parse_comdirekt\parseComdirectPDF.py"

, line 323, in <module>

workbook.close()

File "build\bdist.win32\egg\xlsxwriter\workbook.py", line 286, in close

File "build\bdist.win32\egg\xlsxwriter\workbook.py", line 509, in _store_workb

ook

File "build\bdist.win32\egg\xlsxwriter\packager.py", line 144, in _create_pack

age

File "build\bdist.win32\egg\xlsxwriter\packager.py", line 391, in _write_style

s_file

File "build\bdist.win32\egg\xlsxwriter\styles.py", line 58, in _assemble_xml_f

ile

File "build\bdist.win32\egg\xlsxwriter\styles.py", line 138, in _write_num_fmt

s

File "build\bdist.win32\egg\xlsxwriter\styles.py", line 194, in _write_num_fmt

 

File "build\bdist.win32\egg\xlsxwriter\xmlwriter.py", line 80, in _xml_empty_t

ag

File "C:\Python27\lib\codecs.py", line 688, in write

return self.writer.write(data)

File "C:\Python27\lib\codecs.py", line 351, in write

data, consumed = self.encode(object, self.errors)

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 40: ordinal

not in range(128)

 

 

 

hat noch einer eine Idee ?! heul !

parseComdirectPDF.zip

Share this post


Link to post
shadow
Posted

Kurswert ist bei einem Wertpapierkauf -7,5 anstatt 7,5 !?

parseComdirectPDF.zip

Share this post


Link to post
StBa
Posted · Edited by StBa

Hallo Shadow,

bei mir funktioniert Deine Version auch nicht :-(

dafür geht bei mir die erste Fassung mit der Anpassung 'rb' :-)

 

ich habe hier py 2.7.9

XlsxWriter==0.6.6

argparse==1.3.0

pdfminer==20140328

 

und die CMD-Schleife schleift nur die PDF-Dateien und übergibt das dann an den Aufruf

 

aus python parseComdirectPDF.py -o test.xlsx !aa!

wird

dann python parseComdirectPDF.py -o test.xlsx 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf .....

 

so als hätte mans von Hand eingegeben,

 

lg

StBa

Share this post


Link to post
ZappBrannigan
Posted · Edited by ZappBrannigan

hat noch einer eine Idee ?! heul !

Du hast wieder eine Menge Sonderzeichen (hauptsächlich Umlaute) eingebaut. Nimm die doch mal wieder raus.

 

Hier nochmal meine Version ohne Umlaute (bzw. richtig kodiert), diesmal auch mit 'rb'. Funktioniert diese Version? (mit manueller Angabe der Dateien oder auch mit der CMD-Lösung von StBa).

parseComdirectPDF.py.zip

Share this post


Link to post
shadow
Posted

Danke

 

ZappBrannigan

nur das Problem ist schon das du eine alte Version von PDFMiner benutz (2011) und stba die Version von 201403.

 

und deine Version hat in der ersten Zeile hauptsächlich Müll ( UTF-8 und das könnte die BOM sein !?) https://docs.moodle.org/24/en/UTF-8_and_BOM

 

und wenn ich den Muell in der ersten Zeile lösche bekomme ich

 

 

ImportError: cannot import name PDFDocument

 

Das hängt an der uralt Version PDFMiner das bekomme ich durch einen Downgrade weg, was aber nicht so im Sinne des Erfinders sin kann :)

 

Interessant wäre mal die Version von STBA, da er scheinbar die neue PDFMineversion und Windows benutzt und es funktioniert !

 

 

 

 

 

 

 

 

 

Share this post


Link to post
StBa
Posted

Hallo shadow,

ich habe es gerade noch mal getestet mit der allerersten Version von ZappBrannigan,

die angehängte Version ist die originale Version, also ohne slate

 

OHNE das 'rb' kommt bei einem Wertpapierreport "kenne die Datei nicht"

MIT 'rb' funzt es

 

ich habe auch nur Wertpapierabrechnungen hier, ob eine Gutschrift fälliger Wertpapier-Erträge geht, kann ich nicht sagen

 

tut mir leid , nicht mehr beitragen zu können...

 

liebe Grüße,

Stefan

parseComdirectPDF_ALT.zip

Share this post


Link to post
shadow
Posted

Danke Stefan,thumbsup.gif

 

dein Script funktioniert ! Ausser bei meinem Respol kauf da ist der Kurs -7,5 !? Das wär mal was ein negativer Kurs ! ;)

 

jetzt Vergleich ich mal wieso meins immer noch muckt ! Deins funktioniert sogar wenn man lf ->CR LF ändert. Man darf es nur nicht als ANSI abspeichern sondern muss es als UTF-8 abspeichern (Notepad++) trotz der UTF-8 Zeile im Script !? Ich hätte da schon mal angenommen das Python das durch diese Zeile erkennt aber egal.

 

Danke :)

Share this post


Link to post
StBa
Posted

Hallo shadow,

mein Beitrag war nur das 'rb', das ich aus dem pdf2text.py abgeschaut habe :)

 

Mein Dank geht an ZappBrannigan für das coole Script,

 

lg

StBa

Share this post


Link to post
shadow
Posted

Ich glaube da gibts noch ein paar Fehler ?

 

#a = re.search('Nennwert[ ]*Zum Kurs von[ ]*\n'

a = re.search('Nennwert[ ]*Zum ....* von[ ]*\n'

 

In einem steht bei mir "zum Preis" und nicht zum Kurs

 

und warum beim workbook.close der Fehler kommt hängt scheinbar an Nestle(e+Schrägstrich mal wieder der Sche... Unicode).

 

Wenn beim Wertpapierkauf gestückelt gekauft wurde wird das auch nicht erkannt !

Share this post


Link to post
shadow
Posted

Das hilft gegen Nestle (mit accent grave ) im PDF

 

 

keys['name'] = a.groups()[0].rstrip(' ').decode('utf-8')

logging.debug('!!!Keys name = %s',keys['name'])

keys['wkn'] = a.groups()[1].decode('utf-8')

keys['typ'] = a.groups()[2].rstrip(' ').decode('utf-8')

keys['isin'] = a.groups()[3].decode('utf-8')

Share this post


Link to post
Maciej
Posted

@ZappBrannigan: Nur mal ein kleiner Vorschlag zu den Updates: Leg doch für dein Projekt ein GitHub-Repository oder so an, dann gibt es eine zentrale Stelle, wo immer die neuste Version verfügbar ist, und Änderungen lassen sich so auch besser verfolgen.

Share this post


Link to post
ZappBrannigan
Posted

Ich glaube da gibts noch ein paar Fehler ?

 

#a = re.search('Nennwert[ ]*Zum Kurs von[ ]*\n'

a = re.search('Nennwert[ ]*Zum ....* von[ ]*\n'

 

In einem steht bei mir "zum Preis" und nicht zum Kurs

Da ich noch nie Aktien gekauft habe, ist mir so eine Datei bisher nicht untergekommen (wie auch im Eingangspost erwähnt). Ist natürlich klar, dass da was schief gehen kann. Hab die Abfrage aber jetzt auch bei mir geändert, d.h. er sollte jetzt auch in meiner Version 'Zum Preis von' erkennen.

 

Wenn beim Wertpapierkauf gestückelt gekauft wurde wird das auch nicht erkannt !

Auch solche Abrechnungen habe ich nicht, kann sie also auch nicht testen.

 

 

Das hilft gegen Nestle (mit accent grave ) im PDF

Könnte mir vorstellen, dass hier auch wieder der 'Binary'-Modus helfen könnte. Also die Ausgabedatei mit argparse.FileType('wb') statt 'w' öffnen.

 

Ich bin im übrigen mittlerweile wieder auf dem aktuellsten Stand bzgl. PDFMiner & Co. Das Problem war, dass PDFMiner sowohl über pip, als auch über den Paketmanager meines Systems installiert hatte. Leider wurde letzterer verwendet, welcher völlig veraltet war. Hab ihn daher deinstalliert und alles läuft so wie vorher.

 

Daher anbei nochmal meine allerneuste Version. Sollte jetzt auch wieder bei euch funktionieren, da kein slate mehr verwendet wird (slate scheint tatsächlich inkompatibel mit neueren PDFMiner-Versionen zu sein - hab's jedenfalls nicht zum laufen gebracht).

 

 

@ZappBrannigan: Nur mal ein kleiner Vorschlag zu den Updates: Leg doch für dein Projekt ein GitHub-Repository oder so an, dann gibt es eine zentrale Stelle, wo immer die neuste Version verfügbar ist, und Änderungen lassen sich so auch besser verfolgen.

Im Prinzip ein guter Vorschlag, da ich auch ein großer Freund von git bin :). Allerdings würde ich da doch eher noch ein bißchen abwarten wollen. Ob nach dem hoffentlich baldigem Ausräumen der Anfangsschwierigkeiten an dem kleinen Skript wirklich soviel rumgedoktort werden wird, bezweifele ich etwas. Ungepflegte github-Projekte gibt es schon genug.

parseComdirectPDF.py.zip

Share this post


Link to post
shadow
Posted

So sieht eine Stueckelung beim Kauf au, hat da jemand eine Idee wie man das per Regex rausbekommt !?

post-28811-0-15324100-1425195908_thumb.jpg

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...