import csv print("Detta program rapporterar skillnader mellan verifikat som refererar till varandra genom beskrivningen av verifikatet. Den utgår från krediter och hittar matchande debeter") lines = [] result = [] with open("konto.csv", "r") as file: lines = file.readlines() startLine = 12 # READING for i, line in enumerate(lines): if "Konto" in line and "Verifikation" in line: startLine = i break with open("konto.csv", "w") as file: file.writelines(lines[startLine:-1]) with open("konto.csv", "r") as file: csvreader = csv.DictReader(file, delimiter=";") for row in csvreader: result.append(row) with open("konto.csv", "w") as file: file.writelines(lines) # FILE RESTORED, PARSE DATA krediter = {} debeter = {} header = result.pop(0) for line in result: if not line['"Verifikation"']: continue if line['"Kredit"'] and float(line['"Kredit"'].replace(",",".").replace(" ","")) > 0: krediter[line['"Verifikation"'].replace(" ","")] = line elif line['"Debet"'] and float(line['"Debet"'].replace(",",".").replace(" ","")) > 0: debeter[line['"Verifikation"'].replace(" ","")] = line sums = {} for kVerf, kLine in krediter.items(): sums[kVerf] = {"value": -float(kLine['"Kredit"'].replace(",",".").replace(" ","")), "debets": []} toDel = [] for dVerf, dLine in debeter.items(): if kVerf + " " in dLine['"Beskrivning"'] or dLine['"Beskrivning"'].endswith(kVerf): sums[kVerf]["value"] = sums[kVerf]["value"] + float(dLine['"Debet"'].replace(",",".").replace(" ","")) sums[kVerf]["debets"] = sums[kVerf]["debets"] + [dVerf] toDel.append(dVerf) for dVerf in toDel: del debeter[dVerf] for verf, a in sums.items(): if abs(a["value"]) > 0.0001: print(verf, ": ", a) #seen = {} # #for verf in content: # if verf[1] not in seen.keys(): # seen[verf[1]] = verf[0] # else: # seen.pop(verf[1]) # #for kr, verf in seen.items(): # print(verf, kr)