Regulärer Ausdruck zum finden von Leerzeilen am Dateiende



  • Hallo

    Habe sehr viele Dateien. Normales Textformat. Am Ende der Daten dürfen nun keine Leerzeichen mehr sein.
    Wie such ich nun nach diesen Leerzeichen am Ende der Datei mit hilfe von Regulären Ausdrücken?



  • Nachsehen, ob die Implementation einen Ausdruck für EOF hat (hat sie wahrscheinlich). Dann suchen nach einer Klasse aus beliebig viel Whitespace und danach EOF. Fertig.
    🙂



  • Was. Ich versteh nur Bahnhof.

    Was für ne Implementation? Ist ein Textfile.

    Dann suchen nach einer Klasse aus beliebig viel Whitespace.

    Was für ne Klasse? Und was ist das für ein deutsch. Sorry.

    Danke das du mir antworten wolltest, aber so bringt mich das nicht weiter.



  • Ich meinte die RegExp-Implementation. Python z.b. hat $ für das Ende des Suchstrings, danach kann man suchen:

    >>> import re
    >>> re.search(r"[\n]+$", "ab\n\n").span()
    (2, 4)
    

    Der reg. Ausdruck ist hier [\n]+$ , d.h. ein oder mehrere Newlines, dann das Ende. Der Treffer geht vom 3. bis zum 5. Zeichen (das 5. ist das Ende), wie erwartet.

    Die [] erzeugen die class (oder set), bestehend nur aus einem Newline. Das + sagt: einmal oder mehrmals diese Klasse.

    Wenn der String nicht mit einem Newline aufhört, findet der Ausdruck nichts:

    >>> re.search(r"[\n]+$", "ab\n\na").span()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'NoneType' object has no attribute 'span'
    

    Ich weiss aber nicht, ob es dieses $ überall gibt, und auch nicht, ob sich da ein Fehler eingeschlichen hat.
    🙂

    Nachtrag: natürlich hat es keinen Sinn, eine Klasse mit nur einem Element anzulegen, d.h. die [] kann man weglassen. Aber im Prinzip schaden sie auch nicht.



  • Benutze Visual Studio zum suchen und $ bedeutet dort Zeilenende und nicht Dateiende.



  • hottehüh schrieb:

    Benutze Visual Studio zum suchen und $ bedeutet dort Zeilenende und nicht Dateiende.

    Das kann man vielleicht abstellen, in Python heisst das "multiline mode". Vielleicht gibt's in VS auch einen anderen Ausdruck für das Ende. Ohne einen solchen Ausdruck für das Ende wüsste ich nicht, wie man das machen sollte.
    🙂


Log in to reply