Seite 1 von 1

In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Samstag 21. Dezember 2013, 17:51
von zappa
Hi, ich such nach einer Möglichkeit in einer html-Datei die Anzahl der Zeilen zwischen zwei vorher gesetzten Markierungen zu zählen und steh da grade auf dem Schlauch.

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Samstag 21. Dezember 2013, 18:07
von /me
zappa hat geschrieben:Hi, ich such nach einer Möglichkeit in einer html-Datei die Anzahl der Zeilen zwischen zwei vorher gesetzten Markierungen zu zählen und steh da grade auf dem Schlauch.
Meinst du mit Zeilen reale Zeilen der Datei? In dem Fall ist es völlig unerheblich, dass es sich um eine HTML-Datei handelt.

Die Vorgehensweise ist recht einfach. Nach dem Öffnen der Datei durchläufst du jede Zeile, schaust nach ob deine Startmarkierung vorkommt und merkst dir die Zeilennummer. Wenn die Endmarkierung kommt berechnest du die Differenz.

Ungetesteter Code:

Code: Alles auswählen

def get_line_difference(filename):
    with open(filename, 'r') as f:
        for linenumber, line in enumerate(f):
            if "abc" in line:
                start = linenumber
            if "xyz" in line:
                return linenumber - start

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Samstag 21. Dezember 2013, 18:33
von snafu
@zappa: Was ist das eigentliche Problem, das gelöst werden soll? Setzt du die Markierungen selber oder hast du keinen Einfluss darauf? Welchen Sinn soll das Zählen der Zeilen haben? Falls du die Markierungen selber setzt: Bist du sicher, dass du nicht lieber mit einem HTML-Parser nach bestimmten Tags suchen willst, anstatt die Markierungen zu setzen?

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Sonntag 22. Dezember 2013, 11:24
von zappa
Dankeschön an /me - das probier ich mal so aus.
snafu - die Markierungen setzte ich selbst. Ich möchte nur für die Druckausgabe der html-Seite ein page-break-after-Befehl einfügen, damit der Ausdruck ordentlich aussieht.
Ist das mit einem html-Parser möglich?

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Sonntag 22. Dezember 2013, 12:24
von /me
zappa hat geschrieben:Ich möchte nur für die Druckausgabe der html-Seite ein page-break-after-Befehl einfügen, damit der Ausdruck ordentlich aussieht.
Dir ist aber schon klar, dass die Anzahl der Zeilen in der Datei nichts mit der Anzahl der Zeilen in der Ausgabe zu tun hat?

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Freitag 27. Dezember 2013, 19:57
von zappa
:oops: au Mann, daran hab ich gar nicht gedacht. Vielleicht wäre es dann sinnvoller die einzelnen Zeichen zu zählen. Das müsste doch funktionieren - oder?

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Freitag 27. Dezember 2013, 20:02
von Hyperion
zappa hat geschrieben::oops: au Mann, daran hab ich gar nicht gedacht. Vielleicht wäre es dann sinnvoller die einzelnen Zeichen zu zählen. Das müsste doch funktionieren - oder?
Vielleicht wäre es besser, wenn Du (noch einmal?) über snafus Posting nachdenkst und Dir einen HTML-Parser schnappst ;-)

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Freitag 27. Dezember 2013, 20:08
von cofi
Zeichen zaehlen macht auch nur dann Sinn, wenn du den Quelltext drucken willst, willst du tatsaechlich die Seite drucken, brauchst du erstmal einen Renderer - auch ein Parser hilft hier nicht viel.

Und dann ... solltest du dir einen anderen Ansatz suchen, denn die Ausgabe einer HTML Seite hat nicht unbedingt viel mit deren textueller Beschreibung zu tun dank CSS und Konsorten.

Was ist denn dein eigentliches Problem?

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Freitag 27. Dezember 2013, 20:12
von Hyperion
cofi hat geschrieben:Zeichen zaehlen macht auch nur dann Sinn, wenn du den Quelltext drucken willst, willst du tatsaechlich die Seite drucken, brauchst du erstmal einen Renderer - auch ein Parser hilft hier nicht viel.
Ah... jetzt habe ich sein eigentliches Problem erst verstanden :oops: Ich dachte er *wüßte*, wo der Befehl hin muss...

Ja, das wird bei HTML wohl eher nix - spräche denn etwas gegen ein anderes Format? Evtl. kann man das Dokument ja in LaTeX o.ä. umwandeln?

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Freitag 27. Dezember 2013, 20:42
von snafu
@zappa: Was spricht denn gegen die Seitenumbrüche, die sozusagen auf natürliche Weise beim Ausdrucken entstehen?

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Sonntag 29. Dezember 2013, 10:25
von zappa
Also mal vielen Dank für die vielen Antworten.
In meinem python-programm sind Formularfelder, die man mit beliebig viel Text ausfüllen kann. Dieser Text wird dann in eine html-Seite eingebunden.
Wenn ich die Seite ausdrucken möchte gibt es ja - am Seitenende - einen automatischen Seitenumbruch. Dieser Seitenumbruch ist dann manchmal an sehr ungünstigen Stellen, z.b. genau nach einer Überschrift - da hätte ich natürlich die Überschrift gerne au der folgenden Seite, auf der dann auch das ganze dazu passende Kapitel steht.
LaTeX hatte ich auch schon mal überlegt; das läuft aber nicht auf den Rechnern, auf denen das Skript läuft.

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Sonntag 29. Dezember 2013, 10:53
von BlackJack
@zappa: Das beschriebene Problem kannst Du doch umgehen in dem Du den umgekehrten Weg gehst, also nicht irgendwo per Hand Seitenumbrüche einfügen sondern Seitenumbrüche hinter Überschriften verbieten durch ein ein 'page-break-after: never' (aus dem Kopf, hoffe das ist richtig so).

Re: In Datei Zeilenzahl zwischen zwei Markierungen finden

Verfasst: Sonntag 29. Dezember 2013, 17:56
von zappa
BlackJack hat geschrieben: 'page-break-after: never' (aus dem Kopf, hoffe das ist richtig so).
Die Rettung BlackJack. Es ist das

Code: Alles auswählen

page-break-inside:avoid
Du hast ganz richtig gelegen. Damit verhindere ich den Seitenumbruch in meinem Abschnitt (<p>blablabla</p>.
Vielen Dank - jetzt sieht meine html-Seite endlich ordentlich aus :D