Buƙatu
- Python 3.9 zuwa 3.14
- Damar shiga tasha (macOS, Linux, ko WSL)
Shigarwa
pip install bankstatementparser
Don tallafin Polars DataFrame:
pip install bankstatementparser[polars]
Farawa Cikin Sauri
Gano Ta Atomatik Da Bincika Kowane Tsari
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())
Wannan yana aiki tare da fayilolin .xml (CAMT/PAIN.001), .csv, .ofx, .qfx, .mt940, da .sta.
Bincika CAMT.053
from bankstatementparser import CamtParser
parser = CamtParser("statement.xml")
transactions = parser.parse()
Bincika PAIN.001
from bankstatementparser import Pain001Parser
parser = Pain001Parser("payment.xml")
payments = parser.parse()
Streaming Manyan Fayiloli
Don fayiloli masu ma'amaloli dubbai, yi amfani da streaming don kiyaye ƙwaƙwalwar ajiya mai iyaka:
parser = CamtParser("large_statement.xml")
for transaction in parser.parse_streaming(redact_pii=True):
process(transaction) # Ƙwaƙwalwar ajiya tana daidaita
Bincike Cikin Ƙwaƙwalwa
Bincika daga bytes ba tare da rubutu zuwa faifai ba -- mai amfani don hanyoyin SFTP ko API:
xml_bytes = download_from_sftp()
parser = CamtParser.from_bytes(xml_bytes, source_name="daily.xml")
transactions = parser.parse()
Sarrafa Fayiloli A Layi Ɗaya
Bincika fayiloli da yawa a lokaci guda:
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")
Cire Kwafi
Gano kwafi daidai da abin da ake zargi tare da ƙimar amincewa:
from bankstatementparser import CamtParser, Deduplicator
parser = CamtParser("statement.xml")
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(parser.parse()))
print(f"Na musamman: {len(result.unique_transactions)}")
print(f"Kwafi daidai: {len(result.exact_duplicates)}")
print(f"Abin da ake zargi: {len(result.suspected_matches)}")
Sarrafa ZIP Mai Tsaro
Sarrafa fayilolin XML masu ZIP tare da binciken tsaro da aka gina ciki (kariya daga bam, ƙin shigarwar da aka ɓoye):
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())} ma'amaloli")
Fitarwa
parser = CamtParser("statement.xml")
parser.export_csv("output.csv")
parser.export_json("output.json")
# Polars (yana buƙatar bankstatementparser[polars])
polars_df = parser.to_polars()
Amfani Da CLI
# Bincika da nuna
python -m bankstatementparser.cli --type camt --input statement.xml
# Fitar zuwa CSV
python -m bankstatementparser.cli --type camt --input statement.xml --output transactions.csv
# Stream tare da PII a bayyane
python -m bankstatementparser.cli --type camt --input statement.xml --streaming --show-pii
Zaɓuɓɓukan CLI:
--type {camt,pain001}-- nau'in mai bincike--input <path>-- fayilin shigarwa--output <csv_path>-- fitar zuwa CSV--streaming-- streaming manyan fayiloli--show-pii-- nuna filayen sirri (an ɓoye ta asali)--max-size <MB>-- iyakar girman fayil
Saita Ci Gaban Gida
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
Gudanar da jerin gwaje-gwaje:
pytest
Nassoshi API
Ajin Mai Bincike
| Aji | Tsari | Shigo Da |
|---|---|---|
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 |
Ayyukan Amfani
| Aiki | Manufa |
|---|---|
detect_statement_format(path) |
Gano tsarin fayil ta atomatik |
create_parser(path, fmt) |
Ƙirƙira mai binciken da ya dace |
parse_files_parallel(paths) |
Bincika fayiloli da yawa a lokaci guda |
iter_secure_xml_entries(zip_path) |
Bincika shigarwar ZIP cikin tsaro |
Ajin Bayanai
| Aji | Manufa |
|---|---|
Deduplicator |
Gano kwafin ma'amaloli |
DeduplicationResult |
Sakamako tare da na musamman, daidai, da abin da ake zargi |
InputValidator |
Tabbatar da hanyoyin fayil da tsari |
Transaction |
Bayanan ma'amala masu daidaituwa |
FileResult |
Sakamako daga bincike a layi ɗaya |
ZipXMLSource |
Ɓangaren ZIP |
Kurakurai
| Kuskure | Lokacin Da Ake Haddasa |
|---|---|
ParserError |
Gazawar bincike |
ExportError |
Gazawar fitarwa (CSV/JSON/Excel) |
ValidationError |
Gazawar tabbatar da shigarwa |
ZipSecurityError |
Gazawar binciken tsaron ZIP |