Die Webseiten der Fachschaft Informatik am ERG SaalfeldProblem mit splitAuf der Seite "Wörter zählen" gab es eine Aufgabe, dass das Programm die Wörter zählte
und diese Anzahl durch nachzählen überprüft werden sollte. Diese Anzahl konnte nur sehr selten bestätigt werden.
Anders formuliert: die durch das Programm bestimmte Anzahl war in den meisten Fällen falsch. Es soll jetzt dieser Satz an den Leerzeichen zerlegt und dann die Wörter gezählt werden: 'Wir splitten diese Zeile mit Leerzeichen.' Das Besondere an diesem Text ist, dass hier mehrere Leerzeichen verwendet werden und wir wollen ja genau an den Leerzeichen splitten. Damit wir die Leerzeichen besser zählen können, wird hier der Satz auch so angegeben, dass zwischen den Wörtern statt Leerzeichen Punkte geschrieben werden, also so: 'Wir.splitten..diese...Zeile....mit.....Leerzeichen.' Dieser Satz mit den Punkten dient nur zum Vergleich. Der wird nicht gesplittet. Da er bleibt, schreiben wir den als erste Zeile. Außerdem ersetzen wir noch das letzte Wort, damit es inhaltlich stimmt. Also jetzt so: 'Wir.splitten..diese...Zeile....mit.....Punkten nicht.' Programm
Der Aufruf sah bei mir so aus:
LösungWir verwenden einen regulären Ausdruck. Wir wollen ja gar nicht an einem Leerzeichnen trennen,
sondern unser Trenner sollen alle Leerzeichen zwischen den Wörtern sein. Dazu schreibt man hinter den Trenner ein Plus, was bedeutet, der Trenner ist ein
oder mehrere Leerzeichen. Da eine Regex (im Normalfall) gierig ist, bedeutet das, dass alle Leerzeichen als Trenner verwendet werden.
Der Aufruf sah bei mir nun so aus: Jetzt erhalten wir unser gewünschtes Ergebnis. Anmerkung: Es ist aber nicht besonders gut lesbar, wenn man ein Leerzeichen als Zeichen schreibt. Genau das war ja auch das Problem mit der Aufgabe. Es ist besser, die besondere Zeichenklasse '\s' zu verwenden (siehe hier). Dann würde die Zeile mit dem split-Befehl so aussehen: temp = re.split("\s+",zeile2)
© ERG Saalfeld - HD. Kirmse letztes Update 30.03.2023 |