71 lines
2.6 KiB
Python
71 lines
2.6 KiB
Python
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
|
|
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.')
|