2025-06-09 08:51:45 +02:00

72 lines
2.2 KiB
Python

import re
from datetime import datetime
"""
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", encoding="utf-8") as f:
log = f.read()
pattern = (
r"^(?P<date>\w{3}\s+\d{1,2})\s"
r"(?P<time>\d{2}:\d{2}:\d{2})\s"
r"(?P<computer>[\w.-]+)\s"
r"(?P<process>[\w.-]+)"
r"(?:\[(?P<process_id>\d+)\])?:\s"
r"(?P<message>.*)$"
)
items: list[dict] = []
for match in re.finditer(pattern, log, re.MULTILINE):
m = match.groupdict()
dt_str = f"{m['date']} {datetime.now().year} {m['time']}"
dt = datetime.strptime(dt_str, "%b %d %Y %H:%M:%S")
items.append(
{
"timestamp": dt,
"computer": m["computer"],
"process": m["process"],
"process_id": m["process_id"],
"message": m["message"].strip(),
}
)
return items
def aufgabe_2():
with open("part-3/regex/heidi.md", "r", encoding="utf-8") as f:
text = f.read()
pattern = r"\bHeidi"
new_name = "Mia"
text = re.sub(pattern, new_name, text)
output_filename = f"part-3/regex/{new_name.lower()}.md"
with open(output_filename, "w", encoding="utf-8") as f:
f.write(text)
if __name__ == "__main__":
print(aufgabe_1())
# aufgabe_2()