Files
UCS_Import_Python/first_try/format_csv.py
2024-01-26 15:41:22 +01:00

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.')