Erste Schritte

Beginnen Sie mit dem Entwickeln sicherer Anwendungen mit dem Kontoauszug-Parser

Voraussetzungen

Installation

pip install bankstatementparser

Fuer Polars DataFrame-Unterstuetzung:

pip install bankstatementparser[polars]

Schnellstart

Beliebiges Format automatisch erkennen und parsen

from bankstatementparser import create_parser, detect_statement_format

fmt = detect_statement_format("transactions.ofx")
parser = create_parser("transactions.ofx", fmt)
df = parser.parse()  # pandas DataFrame
print(df.head())

Dies funktioniert mit .xml (CAMT/PAIN.001), .csv, .ofx, .qfx, .mt940 und .sta-Dateien.

CAMT.053 parsen

from bankstatementparser import CamtParser

parser = CamtParser("statement.xml")
transactions = parser.parse()

PAIN.001 parsen

from bankstatementparser import Pain001Parser

parser = Pain001Parser("payment.xml")
payments = parser.parse()

Streaming grosser Dateien

Bei Dateien mit Tausenden von Transaktionen verwenden Sie Streaming, um den Speicherverbrauch konstant zu halten:

parser = CamtParser("large_statement.xml")
for transaction in parser.parse_streaming(redact_pii=True):
    process(transaction)  # Memory stays constant

In-Memory-Verarbeitung

Parsen direkt aus Bytes ohne Festplattenzugriff -- ideal fuer SFTP- oder API-Workflows:

xml_bytes = download_from_sftp()
parser = CamtParser.from_bytes(xml_bytes, source_name="daily.xml")
transactions = parser.parse()

Parallele Dateiverarbeitung

Mehrere Dateien gleichzeitig parsen:

from bankstatementparser import parse_files_parallel

results = parse_files_parallel([
    "statements/jan.xml",
    "statements/feb.xml",
    "statements/mar.xml",
])
for r in results:
    print(r.path, r.status, len(r.transactions), "rows")

Deduplizierung

Erkennung exakter Duplikate und vermuteter Uebereinstimmungen mit Konfidenzwerten:

from bankstatementparser import CamtParser, Deduplicator

parser = CamtParser("statement.xml")
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(parser.parse()))

print(f"Unique: {len(result.unique_transactions)}")
print(f"Exact duplicates: {len(result.exact_duplicates)}")
print(f"Suspected matches: {len(result.suspected_matches)}")

Sichere ZIP-Verarbeitung

Verarbeitung komprimierter XML-Dateien mit integrierten Sicherheitspruefungen (Schutz vor ZIP-Bomben, Ablehnung verschluesselter Eintraege):

from bankstatementparser import iter_secure_xml_entries, CamtParser

for entry in iter_secure_xml_entries("statements.zip"):
    parser = CamtParser.from_bytes(entry.xml_bytes, source_name=entry.source_name)
    print(f"{entry.source_name}: {len(parser.parse())} transactions")

Export

parser = CamtParser("statement.xml")
parser.export_csv("output.csv")
parser.export_json("output.json")

# Polars (requires bankstatementparser[polars])
polars_df = parser.to_polars()

CLI-Verwendung

# Parsen und anzeigen
python -m bankstatementparser.cli --type camt --input statement.xml

# Nach CSV exportieren
python -m bankstatementparser.cli --type camt --input statement.xml --output transactions.csv

# Streaming mit sichtbaren PII-Daten
python -m bankstatementparser.cli --type camt --input statement.xml --streaming --show-pii

CLI-Optionen:

Lokale Entwicklungsumgebung einrichten

git clone https://github.com/sebastienrousseau/bankstatementparser.git
cd bankstatementparser
python3 -m venv .venv && source .venv/bin/activate
pip install poetry && poetry install --with dev

Test-Suite ausfuehren:

pytest

API-Referenz

Parser-Klassen

Klasse Format Import
CamtParser CAMT.053 (ISO 20022) from bankstatementparser import CamtParser
Pain001Parser PAIN.001 (ISO 20022) from bankstatementparser import Pain001Parser
CsvStatementParser CSV from bankstatementparser import CsvStatementParser
OfxParser OFX from bankstatementparser import OfxParser
QfxParser QFX from bankstatementparser import QfxParser
Mt940Parser MT940 from bankstatementparser import Mt940Parser

Hilfsfunktionen

Funktion Zweck
detect_statement_format(path) Dateiformat automatisch erkennen
create_parser(path, fmt) Den passenden Parser erstellen
parse_files_parallel(paths) Mehrere Dateien parallel parsen
iter_secure_xml_entries(zip_path) ZIP-Eintraege sicher iterieren

Datenklassen

Klasse Zweck
Deduplicator Doppelte Transaktionen erkennen
DeduplicationResult Ergebnis mit eindeutigen, exakten und vermuteten Uebereinstimmungen
InputValidator Dateipfade und Formate validieren
Transaction Normalisierter Transaktionsdatensatz
FileResult Ergebnis der parallelen Verarbeitung
ZipXMLSource ZIP-Member-Wrapper

Ausnahmen

Ausnahme Wird ausgeloest bei
ParserError Fehlern beim Parsen
ExportError Fehlern beim Export (CSV/JSON/Excel)
ValidationError Fehlern bei der Eingabevalidierung
ZipSecurityError Fehlern bei der ZIP-Sicherheitspruefung