Excel-Zellen unterschiedlicher Formate entwirren. in einem Feld steht entweder ein Datum oder ein Datumsbereich (z. B. 15.05.2022–30.05.2022). In Excel sind das nicht identische Formate. Das Datum wird intern als Anzahl der Tage nach dem 1.1.1990 dargestellt, zweiteres ist eine Zeichenkette (String, bzw. in Python str).
Nach lesen vieler Beiträge in stackoverflow habe ich eine Lösung entwickelt.
Gewünschtes Ausgabeformat: YYYY-mm-dd; es soll also aus 30.05.2024 werden: 2024-05-30
Die Routine datum1() liefert das erste Datum, datum() das zweite:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
def datum1(dates): result=‘‚ if isinstance(dates, str): if not dates: result=‘‚ else: d=dates[-10:2-10] m=dates[-7:2-7] y=dates[-4:] result=“{}-{}-{}“.format(y,m,d) if isinstance(dates, int): result = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + dates – 2).strftime(‚%Y-%m-%d‘) return result def datum(dates): result=‘‚ if isinstance(dates, int): result = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + dates – 2).strftime(‚%Y-%m-%d‘) if isinstance(dates, str): d=dates[-10:2-10] m=dates[-7:2-7] y=dates[-4:] result=“{}-{}-{}“.format(y,m,d) return result
Entscheidend ist, das Format der Zelle zu bestimmen. Steht ein Datum darin, so ist das Format int, steht ein Datumsbereich darin, ist das Format str. Diese Prüfung wird vorgenommen mit isinstance(var, typ). Der Rest ist Arbeiten mit Teilstrings, bzw. formatierter Ausgabe.
Kommentare
Keine Kommentare
Kommentare