2025-06-08 16:40:57 +02:00

66 lines
2.0 KiB
Python

from datetime import datetime
import re
"""
Teilaufgabe 1:
> Zerlegen Sie zeilenweise die Datei syslog in die folgenden Bestandteile:
- Datum
- Uhrzeit
- Rechnername
- Prozessname
- Numerische Prozess-ID (ist nicht in allen Zeilen vorhanden)
- Nachricht
> Wandeln Sie dabei Datum und Uhrzeit in ein datetime-Objekt um. Nehmen Sie das aktuelle Jahr für die Bildung des Objekts.
> Die Ausgabe ist eine Liste mit einem dict pro Zeile aus der Quelldatei.
Teilaufgabe 2:
> Laden Sie die Datei heidi.md.
> Ersetzen Sie den Namen Heidi unter Verwendung des re-Moduls mit einem anderen Mädchennamen. https://de.statista.com/statistik/daten/studie/286369/umfrage/beliebteste-vornamen-fuer-maedchen-in-der-deutschen-schweiz/ liefert Ihnen eine Auswahl.
> Speichern Sie den geänderten Text mit dem Dateinamen ab, den Sie ausgewählt haben. Vergessen Sie dabei nicht auf die Dateiendung .md.
"""
def aufgabe_1():
with open("part-3/regex/syslog.txt", "r") as f:
log = f.read()
pattern = (
r"^(?P<date>\w{3}\s\d{2})\s"
r"(?P<time>\d\d:\d\d:\d\d)\s"
r"(?P<computer>\w+-\w+)\s"
r"(?P<process>\w+):\s"
r"(?P<process_id>pci\s\d{4}:\d\d:\d\d\.\d:)?.*:\s"
r"(?P<message>.*)$"
)
res = re.findall(pattern, log, re.MULTILINE)
items: list[dict] = []
for r in res:
items.append({
"date": datetime.strptime(f"{r[0]} {datetime.now().year}", "%b %d %Y"),
"time": datetime.strptime(r[1], "%H:%M:%S"),
"computer": r[2],
"process": r[3],
"process_id": r[4],
"message": r[5],
})
return items
def aufgabe_2():
with open("part-3/regex/heidi.md", "r") as f:
text = f.read()
pattern = r"Heidi"
new_name = "Mia"
text = re.sub(pattern, new_name, text)\
with open("part-3/regex/heidi_new.md", "w") as f:
f.write(text)
if __name__ == "__main__":
# print(aufgabe_1())
aufgabe_2()