In Datei Zeilenzahl zwischen zwei Markierungen finden
Meinst du mit Zeilen reale Zeilen der Datei? In dem Fall ist es völlig unerheblich, dass es sich um eine HTML-Datei handelt.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.
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
@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?
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?
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?
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?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.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Vielleicht wäre es besser, wenn Du (noch einmal?) über snafus Posting nachdenkst und Dir einen HTML-Parser schnappstzappa hat geschrieben: 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?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
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?
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?
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ah... jetzt habe ich sein eigentliches Problem erst verstanden Ich dachte er *wüßte*, wo der Befehl hin muss...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.
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?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
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.
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.
@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).
Die Rettung BlackJack. Es ist dasBlackJack hat geschrieben: 'page-break-after: never' (aus dem Kopf, hoffe das ist richtig so).
Code: Alles auswählen
page-break-inside:avoid
Vielen Dank - jetzt sieht meine html-Seite endlich ordentlich aus