Skip to content

python_doc

Vera Meister edited this page Jul 28, 2020 · 6 revisions

Zurück zu Aufsetzen der Datenbank


Erläuterungen zu den Python-Skripten

mhb_split.py Bevor dieses Skript angewandt werden kann, muss der Modulkatalog (das Modulhandbuch) in ein reines Textformat überführt werden. Es ist zu klären, ob es einen eindeutigen String gibt, der den Beginn einer neuen Modulbeschreibung ankündigt. In dem hier verwendeten Dokument ist es der String Modulbezeichnung: . Ziel ist, das Text-Dokument in einzelne Modulbeschreibungen zu zerlegen.

mhb_file = open("mhb_gesamt.txt","r",encoding="utf8")

Die Datei mit dem Namen mbh_gesamt.txt (erstes Argument der Funktion open()) wird im Lesemodus ("r" - zweites Argument der Funktion open()) geöffnet und der Inhalt in ein Dateiobjekt mit der Bezeichnung mhb_file geladen. Da der Text deutsche Sonderzeichen enthält muss eine passende Zeichencodierung ausgewählt werden. Hierfür wird als weiteres Argument "utf8" übergeben.

mhb_gesamt = mhb_file.read()

Auf das Dateiobjekt mhb_file wird die Funktion read() angewandt und damit der Inhalt des Dateiobjekts als String in die Variable mhb_gesamt eingelesen. Anschließend wird das Dateiobjekt geschlossen:

mhb_file.close()

Nun soll der String in Teilstrings für die einzelnen Module zerschnitten werden. Dafür wird die String-Funktion split() auf den String mhb_gesamt angewandt. Der Deliminator Modulbezeichnung: wird als Argument übergeben. Da für jede Modulbeschreibung eine eigene Datei angelegt werden soll, wird keine maximale Anzahl an Teilen (Argument maxsplit) angegeben.

modDescrSeq = mhb_gesamt.split("Modulbezeichnung: ")

Die Variable modDescrSeq enthält nun eine Liste von Strings, die jeweils eine Modulbeschreibung enthalten. Der Deliminator wird dabei aus dem Ursprungsstring gelöscht. Um diese Strings in einzelne Textdateien zu packen, wird eine Schleife verwendet, die alle Elemente der Liste, beginnend mit dem zweiten mit der Identifikationsnummer 1, in einzelne Textdateien schreibt. Das ist hier angebracht, da vor der ersten Modulbeschreibung allgemeine Texte platziert waren, welche keine Modulbeschreibung darstellen.

i = 1

while i<len(modDescrSeq):

Zunächst wird eine Variable für den i-ten Dateinamen generiert:

fileName = "ModDescr_" + str(i)

Anschließend wird ein zunächst leeres Dateiobjekt mit dem erzeugten Namen (und dem Zusatz ".txt") erzeugt und im Schreibmodus geöffnet. Dafür sorgt das Argument "w".

file = open(fileName + ".txt","w")

In dieses Dateiobjekt wird jetzt das i-te Element aus der Liste modDescrSeq geschrieben. Um ggf. unnötige Zeichen am Beginn und am Ende des Strings zu elminieren, kommt die String-Funktion strip() zum Einsatz:

file.write(modDescrSeq[i].strip())

Mit den abschließenden Statements file.close() und i += 1 wird das im i-ten Durchlauf erzeugte Dateiobjekt geschlossen und der Iterationsindex um 1 hochgezählt. Im konkreten Anwendugnsfall (Modulhandbuch des Studiengangs Informatik Bachelor) wurden 72 Textdateien erzeugt.

Das zweite Python-Skript modDescrToData.py ist noch nicht ausgereift und wird noch überarbeitet. Im aktuellen Stadium unterstützt es nur das Parsen der jeweiligen Modulcharakteristika aus den einzelnen Modulbeschreibungstexten und das Zusammenstellen zu Feature-Listen. Es kann genutzt werden, um diese Zusammenstellungen sukzessive auszugeben. Die zu erfassenden Feature-Abschnitte befinden sich jeweils am Anfang der Texte, da die Features nach ihrer Abfolge im Text geparst und nach erfolgreichem Parsen jeweils vom Anfang des Textes abgeschnitten werden. Bevor diese Listen in Excel mit Verkettungs- und Logikfunktionen weiterverarbeitet werden können, empfiehlt sich eine Vorverarbeitung in Notepad++. In diesem Tool können Harmonisierungen sehr flexibel mit einfachen oder auch RegEx-basierten Suchen-und-Ersetzen-Funktionen vorgenommen werden. Das mindert die ggf. sonst notwendige Nacharbeit.

Clone this wiki locally