def parse_entry(raw_fields: Iterable[str]) -> Entry:
fields = [f.strip() for f in raw_fields]
+ # format change in May 2024, adds a 9th field "Währung"; ignore
+ fields = fields[:8]
# last field is the value, parse as float
value = float(fields.pop().replace('.', '').replace(',', '.'))
# match on who, IBAN, type, or desc
return filter_re.search(entry.date)
with path.open() as f:
- reader = csv.reader(f)
+ reader = csv.reader(f, delimiter=';')
next(reader) # skip header
# first line is the column headers, chop it off
entries = map(parse_entry, reader)