Diese Frage wurde möglicherweise schon einmal gestellt, aber diese passt nicht zu meiner Situation. Ich habe die meisten schon durchgespielt, aber keine der Lösungen hilft.Extrahieren Sie bestimmte Zeilen zwischen der Variablen no von. Zeilen aus der Textdatei in Python
Also, hier ist das Problem. Ich habe eine Textdatei mit einer großen Anzahl von Zeilen.
Hier ist ein Beispiel der Datei:
yyyyyy=xxxx
yyyyyy=xxxxxxxx
Sun Oct 22 15:19:23 PDT 2017
calling sequenc node
++ entering node aaa ( )
Sun Oct 22 15:19:23 PDT 2017
lines xxxxxxxx
calling wroot.bat
++ entering node bbb (xxx )
Sun Oct 22 15:19:23 PDT 2017
xxxxxxxxxxxxxx
calling bsod.bat
xaaaaa
bbbbb
tttttt
bbb completed successfully
-- exiting node bbb
++ entering node ccc (yyyy )
Sun Oct 22 15:19:35 PDT 2017
xxxxxxxxxxxxxxxxx
calling wpretest.bat
Nun möchte ich die Zeilen von dem rufenden Teil extrahieren (im Lieferumfang enthalten) an den Linien, die erfolgreich Zeile über der abgeschlossen ist. Außerdem möchte ich die Zeile nur extrahieren, wenn sie einen Anfang mit ++ hat. Das Nein von. Zeilen nach dem Anruf variiert. Es kann ein Leerzeichen haben, 2 oder mehr Zeilen folgen. Wenn keine Zeile folgt, möchte ich nur die Anrufzeile extrahieren. Wenn in der nächsten Zeile erfolgreich abgeschlossen wird, möchte ich auch die einzelne Anrufzeile extrahieren. Und wenn es andere Zeilen zwischen der aufrufenden Zeile gibt und erfolgreich abgeschlossen wurde, möchte ich alle extrahieren.
Hier ist der Code Ich habe auch mit regulären Ausdrücken versucht zusammen (die Arbeit offenbar nicht)
with open('myfile.txt','r') as log:
for line in log:
match = re.search(node_name_pattern, line)
if line.startswith('++') and match:
node_name.append(match.group())
nn=match.group()
match2 = re.search(node_parameter, line)
if line.startswith('++') and match2:
parameter.append(match2.group())
start_time.append(log.next().strip())
features.append(log.next().strip())
if "calling" in line :
content.append(line.strip())
Hier ist die erwartete Ausgabe:
calling wroot.bat
calling bsod.bat,
xaaaaa,
bbbbb,
tttttt
calling wpretest.bat
Bitte fügen Sie den Code, den Sie versucht haben und Beispieltext –
Wo ist Ihre Probe? Könnten Sie uns ein detailliertes Beispiel mit Eingabe und erwarteter Ausgabe geben? – Allan
Entschuldigung. Habe gerade meine Frage bearbeitet. –