import glob, os import csv import json from collections import defaultdict os.chdir("C:\\Users\\milli\\Documents\\Datenbereinigung") straftat_zuordnung = { "------": "Straftaten insgesamt", "000000": "Diebstahl insgesamt", "000100": "Diebstahl von Kraftwagen insgesamt", "000300": "Diebstahl von Fahrrädern insgesamt", "026000": "Ladendiebstahl insgesamt", "050000": "Diebstahl an/aus Kraftfahgrzeugen insgesamt", "090000": "Taschendiebstahl insgesamt", "210000": "Raub, räuberische Erpressung, räuberischer Angriff auf Kraftfahrer", "217000": "Sonstige Raubüberfälle auf Straßen, Wegen oder Plätzen", "220000": "Körperverletzung insgesamt", "222000": "Gefährlich und schwere Körperverletzung", "674000": "Sachbeschädigung", "725000": "Straftaten gegen das Aufenthaltsgesetz, das Asylgesetz, das Freizügigkeitsgesetz/EU", "730000": "Rauschgiftdelikte", "731000": "Allgemeine Verstöße gem. § 29 BtMG -Konsumentendelikte-", "732000": "Illegaler Handel mit/Schmuggel von Rauschgiften gem. § 29 BtMG", "888000": "Wohnungseinbruchsdiebstahl gem. § 255 Abs. 1 Nr. 3 StGB", "892000": "Gewaltkriminalität", "999999": "Straftaten insgesamt nur Bezirke" } def cleanup_text(text): result = text.replace('.', '') result = result.replace(' ', '') result = result.replace('-', '') return result def cleanup_int(text): result = cleanup_text(text) if result == "": result = "0" return int(result) def cleanup_float(text): result = cleanup_text(text) result = result.replace('%', '') result = result.replace(',', '.') if result == "": result = "0.0" return float(result) complete_data = defaultdict(lambda: defaultdict(lambda: defaultdict(dict))) for file in glob.glob("*.csv"): with open(file, encoding='utf-8') as csvfile: csvreader = csv.reader(csvfile, delimiter=';') next(csvreader, None) delikt_code = file.rpartition('.')[0] print(file) for row in csvreader: complete_data[row[0]][row[1]][straftat_zuordnung[delikt_code]]["2023"] = { "Erfasste Fälle": cleanup_int(row[2]), "Aufgeklärte Fälle": cleanup_int(row[3]), "Aufklärung relativ": cleanup_float(row[4]), } complete_data[row[0]][row[1]][straftat_zuordnung[delikt_code]]["2024"] = { "Erfasste Fälle": cleanup_int(row[5]), "Aufgeklärte Fälle": cleanup_int(row[6]), "Aufklärung relativ": cleanup_float(row[7]), } with open('data.json', 'w', encoding="utf-8") as fp: json.dump(complete_data, fp, ensure_ascii=False, indent=4) #print(complete_data)