#!/usr/bin/env python3 # Konvertiert den "Dienstplan Clean" aus Excel in das ausgabe.csv-Format import csv from datetime import datetime import calendar def parse_date(date_str): """Konvertiert 'Monday, August 11, 2025' zu '2025-08-11'""" try: # Parse das englische Datumsformat date_obj = datetime.strptime(date_str, "%A, %B %d, %Y") return date_obj.strftime("%Y-%m-%d") except: return None def get_weekday_german(date_str): """Gibt den deutschen Wochentag zurück""" try: date_obj = datetime.strptime(date_str, "%A, %B %d, %Y") weekdays = ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag'] return weekdays[date_obj.weekday()] except: return "" # Konvertierung with open('imp-ausgabe.csv', 'r', encoding='utf-8') as infile: reader = csv.reader(infile) header = next(reader) # Mapping der Spalten (imp-ausgabe -> ausgabe) # imp: ,Frühstück,Kochen,Elternabend 1,Elternabend 2,Notdienst Essensausgabe,Putznotdienst # ziel: Datum,Wochentag,Frühstücksdienst,Putznotdienst,Essensausgabenotdienst,Kochen,Elternabend data = [] for row in reader: if len(row) < 6: continue date_str = row[0].strip('"') if not date_str or date_str.startswith('Saturday') or date_str.startswith('Sunday'): continue # Wochenenden überspringen iso_date = parse_date(date_str) if not iso_date: continue weekday = get_weekday_german(date_str) # Dienste extrahieren fruehstueck = row[1].strip() if len(row) > 1 else '' kochen = row[2].strip() if len(row) > 2 else '' elternabend1 = row[3].strip() if len(row) > 3 else '' elternabend2 = row[4].strip() if len(row) > 4 else '' essensausgabe = row[5].strip() if len(row) > 5 else '' putz = row[6].strip() if len(row) > 6 else '' # Elternabend kombinieren elternabend_kombiniert = '' if elternabend1 and elternabend2: elternabend_kombiniert = f"{elternabend1} {elternabend2}" elif elternabend1: elternabend_kombiniert = elternabend1 elif elternabend2: elternabend_kombiniert = elternabend2 data.append([iso_date, weekday, fruehstueck, putz, essensausgabe, kochen, elternabend_kombiniert]) # Sortieren nach Datum data.sort(key=lambda x: x[0]) # Schreibe neue ausgabe.csv with open('ausgabe.csv', 'w', newline='', encoding='utf-8') as outfile: writer = csv.writer(outfile) # Header schreiben writer.writerow(['Datum', 'Wochentag', 'Frühstücksdienst', 'Putznotdienst', 'Essensausgabenotdienst', 'Kochen', 'Elternabend']) # Daten schreiben for row in data: writer.writerow(row) print("Konvertierung abgeschlossen! ausgabe.csv wurde erstellt.")