Ich versuche Transaktionsbriefe von meiner (deutschen) Bank zu analysieren. Ich möchte alle Zahlen aus der folgenden Zeichenfolge extrahieren, die sich als schwieriger herausstellt, als ich dachte. Option 2 macht fast das, was ich will. Ich möchte es jetzt ändern, um z. 80 auch.
Mein erster Versuch ist Option 1, die nur Müll zurückgibt. Warum gibt es so viele leere Saiten zurück? Es sollte immer mindestens eine Nummer von der ersten \ d +, nein?
habenOption 3 funktioniert (oder funktioniert zumindest wie erwartet), also beantworte ich irgendwie meine eigene Frage. Ich denke, ich mache mir hauptsächlich Sorgen darüber, warum Option 2 nicht funktioniert.
%Vor%Ausgabe ist
%Vor% Option 1 ist die am besten geeignete Regex, aber sie funktioniert nicht richtig, weil findall
das zurückgibt, was mit der Erfassungsgruppe ()
übereinstimmt, nicht die vollständige Übereinstimmung.
Zum Beispiel sind die ersten drei Übereinstimmungen in Ihrem Beispiel die 18
, 04
und 2013
, und in jedem Fall wird die Erfassungsgruppe nicht angepasst, so dass eine leere Zeichenfolge zur Ergebnisliste hinzugefügt wird.
Die Lösung besteht darin, die Gruppe nicht erfassen
%Vor%Option 2 funktioniert nur so lange nicht, bis Sequenzen, die kein Komma enthalten, nicht übereinstimmen.
Option 3 ist nicht großartig, weil es z.B. +,1
.
Ich möchte alle Zahlen aus der folgenden Zeichenfolge extrahieren ...
Mit "Zahlen", wenn Sie sowohl die Währungsbeträge als auch die Daten meinen, denke ich, dass dies tun wird, was Sie wollen:
%Vor%Ausgabe:
%Vor%Wenn Sie unter "Zahlen" nur die Währungsbeträge verstehen, verwenden Sie
%Vor%Oder vielleicht noch besser,
%Vor%Diese Frage ist relevant; das folgende
%Vor%Ausgaben
%Vor%Das Ausschließen der "punktierten" Zahlen ist etwas komplizierter:
%Vor%Dies gibt
aus %Vor% Hier ist eine Lösung, die die Anweisung analysiert und das Ergebnis in ein Dictionary namens bank_statement
:
Die Ausgabe dieses Codes:
%Vor%bank_statement['Extag']
zum Beispiel hat den Wert von '18 .04.2013 '
Option 2 stimmt nicht mit Zahlen wie '18 .04.2013 'überein, weil Sie' \ d +, \ d + 'zusammenpassen, was
bedeutetZiffer (ein oder mehrere) Komma Ziffer (eine oder mehrere)
Zum Analysieren von Ziffern in Ihrem Fall verwende ich
%Vor%was in
übersetzt wird %Vor%