2017-02-21 11 views
0

テキストとデータの両方を含むファイル内にいくつかのデータがあります。私は後にも必要としない他のものがたくさんあることを前に特定のポイントの後のテキスト/データファイル内の特定の行

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 

: 例えばそれのスニペットは、次のようになります。基本的には、Volume [cm³]: 107.2という行を対象にして、その値を計算などに使用したいと思っています。しかし、データファイルには異なる構造があるので、このtext/pattern/snippetは異なる構造体に対して繰り返されます。それは多くの場所で発生し、必ずしも同じ順序で必ずしも同じ順序であるわけではないので、[Volume [cm³]]と表示されているデータ入力を使用してください。だから、私が必要とするのは、あるファイルでは2、別のファイルでは4であるかもしれない。

Volume [cm³]: 107.2行をStructure: PTVという名前の行以降にターゲティングするにはどうすればよいですか。

答えて

1

あなたの質問はかなり不明です。あなたがPythonとしてそれをタグ付けして以来、私はあなたがこの言語で解決策を探していると思います。あなたが必要とするのはおそらくregular expressionsです。 Pythonには、reという名前のモジュールが組み込まれています。

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

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

これはあなたに(単位、値)のリストを提供します:

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

ああ、はい、それは私がそれを行うために必要なコースPython言語であった。しかし、それは確かに私にボリュームを与えました。値、ありがとう:D –

関連する問題