2017-02-21 1 views
0

So habe ich einige Daten in einer Datei, die sowohl Text und Daten enthält. Zum Beispiel ein Ausschnitt davon könnte wie folgt aussehen:Ziel spezifische Zeile in Text/Datei nach einem bestimmten Punkt

Structure: PTV 
Plan: CT 
Course: 900 
Volume [cm³]: 107.2 
Dose Cover.[%]: 100.0 
Sampling Cover.[%]: 99.9 
Min Dose [%]: 90.2 
Max Dose [%]: 104.9 
Mean Dose [%]: 100.0 
Modal Dose [%]: 99.7 
Median Dose [%]: 100.1 
STD [%]: 1.7 

Davor gibt es eine Menge anderer Sachen, die ich nicht brauche, und auch danach. Im Grunde möchte ich die Linie mit der Bezeichnung Volume [cm³]: 107.2 anvisieren und diesen Wert für Berechnungen usw. verwenden. Da es jedoch unterschiedliche Strukturen in den Datendateien gibt, wird dieser Text/dieses Muster/Snippet für verschiedene Strukturen wiederholt, so dass ich einfach nicht sagen kann: Verwenden Sie den Dateneingang, wo Volume [cm³] steht, da dies viele Orte betrifft, UND sie nicht immer in der gleichen Reihenfolge sind. Die eine, die ich brauche, könnte Nummer 2 in einer Datei und 4 in einer anderen Datei sein.

Also, wie würde ich gehen Targeting der Volume [cm³]: 107.2 Zeile nach der Zeile sagen Structure: PTV oder welcher Name benötigt wird?

Antwort

1

Ihre Frage ist ziemlich unklar. Da Sie es als Python getaggt haben, suchen Sie wahrscheinlich nach einer Lösung in dieser Sprache. Was Sie brauchen, sind wahrscheinlich regular expressions. Python hat ein eingebautes Modul namens re.

import re 
with open('yourdata', 'r') as f: 
    str = f.read() 

pattern = re.compile("Volume \[([^]]*)\]: ([0-9.]*)") 
re.findall(pattern, str) 

Dies Sie eine Liste (Einheit, Wert) geben:

Out[29]: [('cm³', '107.2')] 
+0

Ah, ja, es war der Sprachkurs Python ich es tun musste in Aber das gab mir in der Tat die Lautstärke. Werte, danke: D –

Verwandte Themen