Ich versuche, den Inhalt eines gegebenen Textes zu extrahieren, der mit einem bestimmten Header beginnt.pyparsing, um den Inhalt eines bestimmten Headers zu extrahieren
Header Text_A
blablabla
blablablabla
Header Text_B
blablablablablan
blablaa
Zu diesem Zweck habe ich thepyparsing api in dieser Weise verwendet:
ParserElement.defaultWhitespaceChars=(" \t")
NL = LineEnd().suppress()
END = StringEnd()
header_1=Literal('Header Text_A')
header_2=Literal('Header Text_B')
any_header = (header_1 | header_2)
# text isn't just anything! don't accept header line, and stop at the end of
the input string
text=Group(~any_header + ~END + restOfLine)
overall_structure = ZeroOrMore(Group(any_header +
Group(ZeroOrMore(text))))
overall_structure.ignore(NL)
Der Code funktioniert gut, wenn ich nur einen Eintrag Text mit dem obigen Header haben. Wenn ich jedoch einen Eintrag mit den obigen Beispielen von Headern und auch einem anderen Text habe, funktioniert es nicht. Zum Beispiel, wenn ich einen Eintrag wie:
blablablablabla
Header Text_A
blablabla
blablablabla
Header Text_B
blablablablablan
blablaa
Es ist nicht ... Allerdings funktioniert, wenn ich nur den Text haben:
Header Text_A
blablabla
blablablabla
Header Text_B
blablablablablan
blablaa
es gut funktioniert ..
Haben Sie eine Idee, wie ich die Probleme bitte lösen kann?
Sie müssen den Kopfteil allein oder den Datenteil extrahieren, wenn ein bestimmter Header vorhanden ist? Bitte erläutern Sie Ihre Frage auch mit etwas mehr klaren Beispielen. Ich konnte nicht einmal den Unterschied zwischen Erfolg Beispiel und Fehler Beispiel – JKC
Ich muss den Datenteil bezogen auf einen bestimmten Header extrahieren. Mit anderen Worten, wenn ich einen gegebenen Header gefunden habe, sollte meine Funktion die nach diesem Header vorhandenen Daten extrahieren ... Der Code, den ich implementiert habe, extrahiert diese Information, obwohl sie nur funktioniert, wenn ich einen Text habe, der nur die Header enthält definiert. Das funktioniert nur, wenn ich einen Text mit einer Struktur habe, die die oben definierten Header enthält. Wenn ich einen Text habe, dem ein Text vorausgeht, der nicht mit den Headern übereinstimmt, funktioniert der von mir implementierte Code nicht. Hoffe, dass ich klarer war, Entschuldigung für mein schlechtes Englisch. – Djo
Verwenden Sie Regex, um zu ermitteln, ob bestimmter Text in der Kopfzeile vorhanden ist oder nicht. Falls gefunden, extrahiere den Datenteil, sonst lass es. – JKC