wiederholt werden. Ich versuche, eine TXT-Datei mit ~ 43 k Zeilen zu ändern. Nachdem der Befehl * Nset in der Datei angegeben wurde, muss ich alle Zeilen extrahieren und speichern, die auf diesen Befehl folgen, und stoppe, wenn der nächste * Befehl in der Datei erreicht wird. Nach jedem Befehl gibt es eine unterschiedliche Anzahl von Zeilen und Zeichen. Zum Beispiel, hier ist ein Beispiel Teil der Datei:Extrahieren Sie Zeilen zwischen Überschriften, die durch Datei
*Nset
1, 2, 3, 4, 5, 6, 7,
12, 13, 14, 15, 16,
17, 52, 75, 86, 92,
90, 91, 92 93, 94, 95....
*NEXT COMMAND
blah blah blah
*Nset
numbers
*Nset
numbers
*Command
irrelevant text
Der Code, den ich zur Zeit Werke haben, wenn die Zahlen, die ich brauche nicht zwischen zwei * Nset ist sind. Wenn ein * Nset den Zahlen eines anderen folgt, überspringt es diesen Befehl und die vorgehenden Zeilen alle zusammen und ich kann nicht herausfinden warum. Wenn der nächste Befehl nicht * Nset ist, findet er den nächsten und zieht die Daten vollkommen in Ordnung.
import re
# read in the input deck
deck_name = 'master.txt'
deck = open(deck_name,'r')
#initialize variables
nset_data = []
matched_nset_lines = []
nset_count = 0
for line in deck:
# loop to extract all nset names and node numbers
important_line = re.search(r'\*Nset,.*',line)
if important_line :
line_value = important_line.group() #name for nset
matched_nset_lines.insert(nset_count,line_value) #name for nset
temp = []
# read lines from the found match up until the next *command
for line_x in deck :
if not re.match(r'\*',line_x):
temp.append(line_x)
else :
break
nset_data.append(temp)
nset_count = nset_count + 1
Ich benutze Python 3.5. Danke für jede Hilfe.
Ist ein Befehl * immer * am Anfang einer Zeile, beginnend mit einem '" * "? –
@ juanpa.arrivillaga, Ja. Es gibt eine Vielzahl von Befehlen, aber unmittelbar vor jedem ist "*". Und dann sind die nächsten Zeile (n) Zahlen. –
Könnte das überhaupt verwandt sein? https://stackoverflow.com/questions/25943000/finding-a-word-between-two-words-that-will-not-match-if-the-closing-word-occurs –