Inhalt aus string entfernen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
zweitklassigerCoder
User
Beiträge: 6
Registriert: Dienstag 14. Dezember 2021, 16:32

Hey, ich hoffe ihr könnt mir weiterhelfen.
Ich habe folgendes Problem:
Ich muss aus einem str die einen großen Teil entfernen. Der Aufbau des stringes ist immer der gleiche.

Bsp.:
Subject: Liveblog: ++ Weitere Lockerungen in Schleswig-Holstein ++
From: "tagesschau" <>
Date: Wed, 15 Jul 2020 17:39:56 +0200
Content-Type: text/html; charset="utf-8"
Link: htp://www.tagesschau.de/newsticker/liveblog-c ... h-123.html

Ab kommender Woche sind in Schleswig-Holstein wieder Veranstaltungen mit bis zu 500 Besuchern erlaubt. In den USA sind erstmals mehr als 67.000 Corona-Neuinfektionen binnen 24 Stunden gemeldet worden. Alle Entwicklungen im Liveblog.

->Ich hab den str in einer Variablen. Ich möchte aber als Ausgabe nur den unteren Teil, ohne die Metadaten. Der Aufbau des str ist immer gleich. Also es ist immer ein bzw. zwei Absätze zwischen Link und Text. Mein Ausgabe sollte es folgende sein:

Ab kommender Woche sind in Schleswig-Holstein wieder Veranstaltungen mit bis zu 500 Besuchern erlaubt. In den USA sind erstmals mehr als 67.000 Corona-Neuinfektionen binnen 24 Stunden gemeldet worden. Alle Entwicklungen im Liveblog.

Jemand eine Idee wie ich das angehen kann? Vielen Dank!
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@zweitklassigerCoder,

wenn immer 5 Zeilen wegfallen, ist es sehr einfach:

Code: Alles auswählen

LONG_TEXT = """Subject: Liveblog: ++ Weitere Lockerungen in Schleswig-Holstein ++
From: "tagesschau" <>
Date: Wed, 15 Jul 2020 17:39:56 +0200
Content-Type: text/html; charset="utf-8"
Link: htp://www.tagesschau.de/newsticker/liveblog-c ... h-123.html

Ab kommender Woche sind in Schleswig-Holstein wieder Veranstaltungen mit bis zu 500 Besuchern erlaubt. In den USA sind erstmals mehr als 67.000 Corona-Neuinfektionen binnen 24 Stunden gemeldet worden. Alle Entwicklungen im Liveblog.
"""

# Text in einzelne Zeilen zerlegen
all_lines = LONG_TEXT.splitlines()

# Die ersten 5 Zeilen auslassen
my_lines = all_lines[5:]

# Die übrigen Zeilen wieder zu einem string zusammenfügen
my_text = "".join(my_lines)

print(my_text)
"""
Ausgabe:
Ab kommender Woche sind in Schleswig-Holstein wieder Veranstaltungen mit bis zu 500 Besuchern erlaubt. In den USA sind erstmals mehr als 67.000 Corona-Neuinfektionen binnen 24 Stunden gemeldet worden. Alle Entwicklungen im Liveblog.
"""
Falls es doch mal mehr oder weniger Zeilen gibt muss man sich eine andere Strategie überlegen. Wichtig ist, dass man Kriterien findet die immer zutreffen.
zweitklassigerCoder
User
Beiträge: 6
Registriert: Dienstag 14. Dezember 2021, 16:32

@rogerb

Die Lösung lag viel näher als ich dachte. Vielen Dank!
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@zweitklassigerCoder: Wo kommt denn die Zeichenkette her? Ist das am Ende eine E-Mail nach RFC822 bzw. einem Folgestandard? Und warum steht im Header der Inhalt sei HTML, im Inhalt ist dann aber gar kein HTML zu sehen?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

Abgesehen von __blackjack__s Anmerkung hast Du einen Text, der aus einem Header und dem eigentlichen Inhalt besteht, welche durch ein doppeltes Newline getrennt sind:

Code: Alles auswählen

header, content = LONG_TEXT.split("\n\n", 1)
print(content)
zweitklassigerCoder
User
Beiträge: 6
Registriert: Dienstag 14. Dezember 2021, 16:32

@__blackjack__ die Dateien haben wir so erhalten um zu üben. Es wurden keine Angaben zur Quelle gemacht.
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

Also hattest du kein Problem, sondern Hausaufgaben … ?
zweitklassigerCoder
User
Beiträge: 6
Registriert: Dienstag 14. Dezember 2021, 16:32

@kbr kann man so sagen ^_^
Jedoch habe ich die Aufgabe falsch verstanden, weshalb mir die funktion leider doch nicht hilft. Die Inhalt wird nicht mit absätzen ausgeben, sondern in einer Liste.
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

@zweitklassigerCoder: Na dann los. Der Unterschied ist ja übersichtlich.
zweitklassigerCoder
User
Beiträge: 6
Registriert: Dienstag 14. Dezember 2021, 16:32

@sparrow: naja, ich weiß nicht genau wie ich das machen könnte.
Antworten