Atupale alaye banki

Bẹrẹ Ilé Awọn ohun elo to ni aabo pẹlu Parser Gbólóhùn Bank

Awọn ibeere

Fi sori ẹrọ

pip install bankstatementparser

Fun atilẹyin Polars DataFrame:

pip install bankstatementparser[polars]

Ibẹrẹ kiakia

Ṣewadii-laifọwọyi ki o ṣe itupalẹ eyikeyi ọna kika

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

Eyi ṣiṣẹ pẹlu.xml(CAMT/PAIN.001),.csv, .ofx, .qfx, .mt940, ati.staawọn faili.

Parse CAMT.053

from bankstatementparser import CamtParser

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

ÌRÒYÌN ÌRÒYÌN.001

from bankstatementparser import Pain001Parser

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

Ṣiṣanwọle Awọn faili nla

Fun awọn faili pẹlu ẹgbẹẹgbẹrun awọn iṣowo, lo ṣiṣanwọle lati jẹ ki iranti di opin:

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

Ni-Memory Parsing

Yatọ kuro ni awọn baiti laisi disiki I/O – wulo fun SFTP tabi awọn ṣiṣan iṣẹ API:

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

Iṣaṣe Faili ti o jọra

Pa ọpọlọpọ awọn faili ni igbakanna:

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

Deduplication

Ṣewadii awọn ẹda-ẹda deede ati awọn ere ti a fura si pẹlu awọn ikun igbekele:

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

Ṣiṣeto ZIP to ni aabo

Ṣiṣẹ awọn faili XML ti a fi sinu rẹ pẹlu awọn sọwedowo aabo ti a ṣe sinu (idaabobo bombu, ijusile titẹsi fifi ẹnọ kọ nkan):

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

Si ilẹ okeere

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

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

CLI Lilo

# 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

Awọn aṣayan CLI:

Eto Idagbasoke Agbegbe

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

Ṣiṣe suite idanwo naa:

pytest

API Itọkasi

Awọn kilasi Parser

Kilasi Ọna kika gbe wọle
CamtParser CAMT.053 (ISO 20022) from bankstatementparser import CamtParser
Pain001Parser Ìrora.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

Awọn iṣẹ IwUlO

Išẹ Idi
detect_statement_format(path) Ṣe iwari ọna kika faili ni aifọwọyi
create_parser(path, fmt) Ṣẹda parser ti o yẹ
parse_files_parallel(paths) Pa awọn faili lọpọlọpọ nigbakanna
iter_secure_xml_entries(zip_path) Ṣe atunto awọn titẹ sii ZIP ni aabo

Data Classes

Kilasi Idi
Deduplicator Ṣawari awọn iṣowo ẹda-iwe
DeduplicationResult Abajade pẹlu alailẹgbẹ, deede, ati awọn ibaamu ti a fura si
InputValidator Sooto awọn ọna faili ati awọn ọna kika
Transaction Igbasilẹ idunadura deede
FileResult Abajade lati itọka ti o jọra
ZipXMLSource Apoti egbe ZIP

Awọn imukuro

Iyatọ Nigbati Dide
ParserError Awọn ikuna ṣiṣe ayẹwo
ExportError Awọn ikuna okeere (CSV/JSON/Excel)
ValidationError Awọn ikuna afọwọsi igbewọle
ZipSecurityError Awọn ikuna ayẹwo aabo ZIP