|
- #!/bin/python3
-
- import sys
- import csv
- import re
- from pathlib import Path
-
-
- def usage():
- print('Usage: ynab.py <filename>')
-
-
- def is_reserved(row):
- return '(Reservert)' in row[1]
-
-
- def convert(reader, writer):
- header = ['Date', 'Payee', 'Memo', 'Outflow', 'Inflow']
-
- writer.writerow(header)
-
- # Ignore header
- reader.__next__()
-
- for row in reader:
- if is_reserved(row):
- continue
-
- money_out = 0
- money_in = 0
-
- money = float(row[3].replace(',', '.'))
-
- if money >= 0:
- money_in = money
- else:
- money_out = -money
-
- memo = re.match(r'="[ ]?(.+)"', row[2]).groups()[0]
-
- new_row = [*row[:2], memo, money_out, money_in]
- writer.writerow(new_row)
-
-
- def main():
- if len(sys.argv) != 2:
- usage()
- exit(1)
-
- filepath = Path(sys.argv[1])
-
- new_basename = f'ynab-{filepath.name}'
- new_filepath = filepath.parent / new_basename
-
- with filepath.open(mode='r') as old_file:
- reader = csv.reader(old_file, delimiter=';')
-
- with new_filepath.open(mode='w') as new_file:
- writer = csv.writer(new_file)
- convert(reader, writer)
-
-
- if __name__ == '__main__':
- main()
|