import pandas as pd import chardet import csv def check_file(path): with open(path, 'rb') as file: result = chardet.detect(file.read()) detected_encoding = result['encoding'] # try: # pd.read_csv(path, encoding=detected_encoding) # except pd.errors.ParserError as e: # # Wenn ein Parserfehler auftritt, gibt eine Fehlermeldung aus # print(f"Fehler beim Einlesen der CSV-Datei: {e}") # print() # data = open(path, "r") # data = ''.join([i for i in data]).replace(",", "") # x = open(path, "w") # x.writelines(data) # x.close() # print(f"Alle Kommas entfernt") # Prüft Formatierung der CSV, formatiert diese zu utf-8 und speichert das Ergebnis als neue Liste def format_csv(path, type): with open(path, 'rb') as file: result = chardet.detect(file.read()) detected_encoding = result['encoding'] # CSV-Datei mit Pandas einlesen # in step1 nicht notwendig, da nicht mit csv, sondern mit pandas frame gearbeitet wird try: df = pd.read_csv(path, encoding=detected_encoding) print("Datei erfolgreich eingelesen.") df.to_csv(type, index=False, encoding='utf-8') print("UTF-8 Kopie erfolgreich erstellt.") except pd.errors.ParserError as e: # Wenn ein Parserfehler auftritt, gibt eine Fehlermeldung aus print(f"Fehler beim Einlesen der CSV-Datei: {e}") def clean_data(path, clean): try: # Lese den Header der CSV-Datei with open(path, 'r', newline='', encoding='utf-8') as csvfile: reader = csv.reader(csvfile, delimiter=';') header = next(reader) # Finde die Indizes der Spalten 'Name' und 'Vorname' und 'Klasse' name_index = header.index('name') vorname_index = header.index('vorname') klasse_index = header.index('klasse') # Öffne die CSV-Datei im Schreibmodus und schreibe nur die gewünschten Spalten zurück with open(clean, 'w', newline='', encoding='utf-8') as csvfile2: writer = csv.writer(csvfile2, delimiter=';') # Schreibe den neuen Header mit 'Name' und 'Vorname' writer.writerow(['name', 'vorname', 'klasse']) print(name_index, vorname_index, klasse_index) for row in reader: writer.writerow([row[name_index], row[vorname_index], row[klasse_index]]) print(f'Nur die Spalten "Name" und "Vorname" in der CSV-Datei {path} wurden beibehalten.') except FileNotFoundError: print(f'Die Datei {path} wurde nicht gefunden.') except ValueError: print(f'Die Spalten "Name" und "Vorname" wurden nicht gefunden.')