Kontoutdragsparser

Börja bygga säkra applikationer med Kontoutdragsparser

Krav

Installera

pip install bankstatementparser

För Polars DataFrame-stöd:

pip install bankstatementparser[polars]

Snabbstart

Autoupptäck och analysera alla format

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())

Detta fungerar med.xml(CAMT/PAIN.001),.csv, .ofx, .qfx, .mt940, och.stafiler.

Analysera CAMT.053

from bankstatementparser import CamtParser

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

Analysera PAIN.001

from bankstatementparser import Pain001Parser

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

Strömmande stora filer

För filer med tusentals transaktioner, använd streaming för att hålla minnet begränsat:

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

In-Memory Parsing

Analysera från byte utan disk I/O -- användbart för SFTP- eller API-arbetsflöden:

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

Parallell filbehandling

Analysera flera filer samtidigt:

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")

Deduplicering

Upptäck exakta dubbletter och misstänkta matchningar med konfidenspoäng:

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)}")

Säker ZIP-bearbetning

Bearbeta zippade XML-filer med inbyggda säkerhetskontroller (bombskydd, krypterad inmatningsavvisning):

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")

Exportera

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

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

CLI-användning

# Parse and display
python -m bankstatementparser.cli --type camt --input statement.xml

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

# Stream with PII visible
python -m bankstatementparser.cli --type camt --input statement.xml --streaming --show-pii

CLI-alternativ:

Lokal utveckling Setup

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

Kör testsviten:

pytest

API-referens

Parser-klasser

Klass Formatera Importera
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

Verktygsfunktioner

Fungera Ändamål
detect_statement_format(path) Autoupptäck filformat
create_parser(path, fmt) Skapa lämplig analysator
parse_files_parallel(paths) Analysera flera filer samtidigt
iter_secure_xml_entries(zip_path) Iterera ZIP-poster säkert

Dataklasser

Klass Ändamål
Deduplicator Upptäck dubbletter av transaktioner
DeduplicationResult Resultat med unika, exakta och misstänkta matchningar
InputValidator Validera filsökvägar och format
Transaction Normaliserad transaktionspost
FileResult Resultat från parallell analys
ZipXMLSource ZIP-medlemsomslag

Undantag

Undantag När uppvuxen
ParserError Analysfel
ExportError Exportfel (CSV/JSON/Excel)
ValidationError Indatavalideringsfel
ZipSecurityError ZIP säkerhetskontroll misslyckades