Files
UCS_Import_Python/first_try/format_csv.py
Patrick vom Hagen 8874c8c87e step1.py udated
2024-02-08 11:15:23 +01:00

72 lines
2.7 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
# 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.')