Textblöcke extrahieren?
Verfasst: Montag 19. November 2007, 11:17
Hallo,
ich versuche Folgendes zu machen:
Gegeben sei eine eingelesene Text-Datei, welche komplett in einer Liste vorliegt. In diesem Text gibt es ein oder mehrere Textblöcke, die ich extrahieren möchte.
Jeder Textblock beginnt mit einen start_string und endet mit end_string.
Jeder start_string ist eindeutig dem gesuchten Textblock zugeordnet.
Der end_string beginnt immer mit demselben Text, endet aber unterschiedlich.
Der end_string kann auch an anderer Stelle im Text vorkommen.
Das Problem mit meinem Code ist das die letzte Zeile mit dem end_string nicht ausgegeben wird. Mir ist klar warum, aber ich sehe aufgrund der Text-Struktur keine andere Möglichkeit den end_string als Abbruchbedingung zu benutzen.
Habt ihr eine Idee, wie ich die letzte Zeile des Textblocks mit extrahieren kann, ohne die Abbruchbedingung von takewhile zu verändern?
ich versuche Folgendes zu machen:
Gegeben sei eine eingelesene Text-Datei, welche komplett in einer Liste vorliegt. In diesem Text gibt es ein oder mehrere Textblöcke, die ich extrahieren möchte.
Jeder Textblock beginnt mit einen start_string und endet mit end_string.
Jeder start_string ist eindeutig dem gesuchten Textblock zugeordnet.
Der end_string beginnt immer mit demselben Text, endet aber unterschiedlich.
Der end_string kann auch an anderer Stelle im Text vorkommen.
Das Problem mit meinem Code ist das die letzte Zeile mit dem end_string nicht ausgegeben wird. Mir ist klar warum, aber ich sehe aufgrund der Text-Struktur keine andere Möglichkeit den end_string als Abbruchbedingung zu benutzen.
Habt ihr eine Idee, wie ich die letzte Zeile des Textblocks mit extrahieren kann, ohne die Abbruchbedingung von takewhile zu verändern?
Code: Alles auswählen
def extract_text(lines):
def check_line(line):
return not line.startswith(end_string)
line_nums = (line_num for line_num,line in enumerate(lines) if start_string in line)
for line_num in line_nums:
for line in takewhile(check_line, iter(lines[line_num:])):
yield line