66 lines
2.0 KiB
Python
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()
|