Linien zwischen zwei sich wiederholenden Mustern drucken [geschlossen]Python

Python-Programme
Anonymous
 Linien zwischen zwei sich wiederholenden Mustern drucken [geschlossen]

Post by Anonymous »

Ich habe eine Datei wie diese.

Code: Select all

==============
aaaa
bbbb
cccc
id = 1111
some text here
some text here
==============
==============
ddddd
eeeee
fffff
id = 22222
some text here
some text here
==============
==============
ddddd
eeeee
fffff
id = 33333
some text here
some text here
==============
Ich muss nach der ID = 2222 suchen und die vollständigen Zeilen zwischen dem ersten und dem letzten =======-Muster erhalten.
Hinweis: Ich kann nicht die genaue Anzahl der Zeilen nach der Zeile id = 2222 verwenden, da diese von Datei zu Datei variieren kann.
Programmschritte:
  • Suchen Sie zuerst die Zeile mit id = 2222.
  • Gehen Sie zum ersten Vorkommen der Zeile ===== vor der Zeile id = 2222.
  • Gehen Sie zum letzten Vorkommen der Zeile ===== nach der Zeile id = 2222.
  • Drucken Sie alle Zeilen dazwischen Muster ===== zwischen id = 2222 Zeile.
Die endgültige Ausgabe lautet:

Code: Select all

==============
ddddd
eeeee
fffff
id = 22222
some text here
some text here
==============
Wie kann ich das erreichen? Ich habe versucht, Folgendes zu verwenden, aber es liefert mir nicht die gewünschte Ausgabe.

Code: Select all

import re

START_PATTERN = '======='
END_PATTERN = '======='

with open('myfile') as file:
match = False
newfile = None

for line in file:
if re.match(START_PATTERN, line):
match = True
newfile = open('my_new_file.txt', 'w')
continue
elif re.match(END_PATTERN, line):
match = False
newfile.close()
continue
elif match:
newfile.write(line)
newfile.write('\n')

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post