import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen # Erklärungen zu diesem Code sind bei der Lehrperson erhältlich. Es ist nicht nötig, diesen Code zu verstehen, um die Aufgabe zu lösen. Es könnte aber interessant sein, sich damit zu beschäftigen. rootdir = 'C:/ordner/wo/alles/liegt/' pathtocsv = 'C:/order/wo/das/resultat/sein/soll/dateiname.csv' mnum = {"Jan": 1, "Feb": 2, "Mar": 3, "Apr": 4, "May": 5, "Jun": 6, "Jul": 7, "Aug": 8, "Sep": 9, "Oct": 10, "Nov": 11, "Dec": 12} # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 10 # Alle HTML-Dateien im Verzeichnis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".html"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r", encoding="utf8") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form Apr. 08, 2021 8:54 am einlesen # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall( "([A-Z][a-z][a-z])\.? (\d{1,2}), (\d{4}) (\d{1,2}):(\d{1,2}) ([ap]m)", html) if (debug > 0): print(file, ": ", len(daten)) debug -= 1 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [mnum[d[0]]] + [int(x) for x in d[1:-1]] # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0) if d[5] == "pm": e[3] = (e[3]+12) % 24 if debug > 0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[2], e[0], e[1], e[3], e[4], 0) if debug > 0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Wochentag (Mo=0, Di=1, ..., So=6) # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects wday = datum.weekday() # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. # Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. csv += datum.strftime("%Y-%m-%d %H:%M:%S;" + os.path.splitext(file)[0]+"\n") # Ausgabe in Datei schreiben f = open(pathtocsv, "w") f.write(csv) f.close()