Ich habe eine Textdatei, wo die relevanten Daten (Zeilen x Spalten) nur zwischen "Start" und "Ende" -Schlüsselwörter erscheinen. Siehe unten. Ich möchte einen Code schreiben, der diese Datenteilmengen extrahieren kann. Wenn eine Zeile mit "start" beginnt, gefolgt von Daten, aber NICHT gefolgt von einem nachfolgenden "end" -Schlüsselwort, dann möchte ich diese Daten ignorieren. In meinem Beispiel unten sind data1 und data3 relevant, aber data2 ist NICHT, weil es nicht von den Schlüsselwörtern "start" und "end" eingeschlossen ist.So extrahieren Sie Datenuntergruppen aus einer Textdatendatei in Python
start
data1 (matrix of data) /relevant because data1 is enclosed by "start" and "end"
end
start
data2 (matrix of data) /not relevant because there is no "end"
.
start
data3 (matrix of data) /relevant for same reason as for data1
end
.
.
and so on
Ich dachte, ich anfangen konnte:
with open(file_path,'r') as file:
text = file.readlines()
start_indexes = []
end_indexes = []
for i, line in enumerate(text):
if line.startswith('start'):
start_indexes.append(i)
elif line.startswith('end'):
end_indexes.append(i)
for i in range(len(start_indexes)):
for j in range(len(end_indexes)):
if (start_indexes[i] < end_indexes[j] < start_indexes[i+1]):
print(start_indexes[i],end_indexes[j])
Der obige Code gibt mir die Startlinie Nummern und die Endlinie Zahlen sowohl in denen relevante Daten. Hier bin ich etwas festgefahren. Wie ziehe ich jetzt die relevanten Daten? In meinem Beispiel wäre dies data1, data3. Komme ich dem Problem den "richtigen" Weg? Sollte ich auf Pandas zurückgreifen? Gibt es einen effizienteren und direkteren Weg?
Ist das Zeilenformat immer ether: 'start; Daten; Start oder Start; Daten; Ende? Bitte schreiben Sie Ihre erwartete Ausgabe für die Beispieleingabe. – wwii