Awọn ibeere
- Python 3.9 si 3.14
- Wiwọle ebute (macOS, Linux, tabi WSL)
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:
--type {camt,pain001}-- iru parser ---input <path>-- faili titẹ sii ---output <csv_path>-- okeere si CSV ---streaming- ṣiṣan awọn faili nla ---show-pii- fihan awọn aaye ifarabalẹ (atunṣe nipasẹ aiyipada) ---max-size <MB>-- opin iwọn faili
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 |