Ich stehe vor folgendem Problem: ich habe eine gegebene Anzahl von unterschiedlichen pdf-Dateien, deren Inhalt ich auswerten möchte.
Der prinzipielle Ablauf ist wie folgt:
- über subprocess.check_output pdftotext ausführen und den Textinhalt der Rechungs-PDF entgegennehmen
- den Textstring untersuchen und bestimmen, von welchen Händler die Rechung ausgestellt wurde
- mit diesem Wissen jetzt relevante Daten aus dem Textstring auslesen, etwa den Rechnungsbetrag
Natürlich könnte ich alles in eine einzige Routine mit tausend ifs packen, aber schön ist natürlich etwas anderes. Also dachte ich als erstes (und vermutlich falsch) an eine Klasse Rechnung, die in ihrer init-Routine die ersten zwei Schritte absolviert. Soweit so gut, problematisch wird es dann aber bei Schritt 3. Jetzt könnte ich natürlich alle weiteren Methoden mit dem Parameter des Rechnungserstellers aufrufen (etwa: invoice.return_billing_amount('Amazon') ) und in der Routine wiederum mit einer if-Abfrage verfahren, je nachdem welches Unternehmen übergeben wurde, aber der Übersicht ist das nicht dienlich, selbst wenn ich für jedes einzelne Unternehmen eine separate Prozedur aufrufe.
Alternativ hatte ich auch schon daran gedacht, vorneweg ein Dictionary anzulegen, welches die Namen an die entsprechenden Routinen bindet, als Pseudocode etwa:
Code: Alles auswählen
def return_billing_amount_amazon():
[...]
return_billing_amount = {'Amazon': return_billing_amount_amazon}
print return_billing_amount['Amazon']()
Oder so:
Code: Alles auswählen
class Amazon_Invoice(object):
[...]
class Invoice(object):
def __init__(self):
# Erkennung des Händlers
[...]
if dealer_name == 'Amazon':
self.invoice = Amazon_Invoice( ... )
Mein Ziel soll sein:
Code: Alles auswählen
[...]
invoice = Invoice('Rechnung.pdf')
print invoice.return_billing_amount()
Dank und Gruß,
Daniel