Grundsätzlich habe ich eine TXT-Datei, die eine Ausgabe von einem Fortran-Modell ist. Die Ausgabe sieht ein wenig wie folgt aus:So finden Sie den Index einer Liste in einer Liste
Title:Model
Temp(K) Ionic str Rho Phi H2O Ice ...
273.15 4 1.003 1.21 1000 0.00
Species Ini Conc Final Conc Act ....
H 0.0 0.12032 0.59
NH4 3.0 3.00 0.43
Cl 1.0 1.00 0.47
...
Title:Model
Temp(K) Ionic str Rho Phi H2O Ice ...
273.15 4 1.003 1.21 1000 0.00
Species Ini Conc Final Conc Act ....
H 0.0 0.12032 0.59
NH4 3.0 3.00 0.43
Cl 1.0 1.00 0.47
...
Jeder Schritt ist ein weiterer Satz, wie das oben so schließlich ich eine TXT-Datei mit 3000+ Schritte haben.
Also möchte ich alle Temperaturen bei jedem Schritt abrufen. Ich versuche etwas zu schreiben, um alle Punkte zu indizieren, wo 'Temp (K)' erscheint und füge dann 1 zu diesem Index hinzu, um den Ort der tatsächlichen Temperatur zu erhalten.
Mein Code sieht wie folgt aus:
import numpy as np
import matplotlib.pyplot as plt
main=[]
main2=[]
count=0
with open('FrOut.txt', 'r') as f:
data=f.readlines()
for line in data:
main.append(line.split(','))
for value in main:
for x in value:
main2.append(x.split())
for value in main2:
for x in value:
if x=='Temp(K)':count+=1
So offensichtlich ist dies nicht der eleganteste Weg, aber ich bin sehr viel in den tiefen Ende mit Python. Wie finde ich den Index einer Liste in der Liste (main2), wenn der erste Wert dieser Liste == 'Temp (K)'?
Nb. Ich benutze np und matplot, um die Daten danach zu plotten.
Sie durchlaufen den Text zweimal, wobei die Indexsuche in der zweiten Liste berücksichtigt wird. Du könntest einfach 'enumerate()' stattdessen benutzen und nur einmal Schleife machen. –
Im zweiten Verständnis, bin ich über die * Indizes *, nicht über die ganze Liste der Zeilen. Ich hätte es tatsächlich in einem einzigen Verständnis tun können. In diesem Fall wähle ich es aus Gründen der Klarheit zu teilen. –
Wie gesagt, der Index Lookup. 'enumerate()' ist einmal eindeutiger als zwei Listen-Comprehensions, die 'enumerate() 'verwenden, wie es ist. –