私はoutput
ファイルに何千もの情報が含まれています。しょっちゅう、私は次の形式パターンにマッチし、Pythonを使用して変数に保存
Input Orientation:
...
content
...
Distance matrix (angstroms):
の出力ファイルの情報で見つける私は今、その後のフォーマットに変数にcontent
を保存したいです。もう1つは、最後のパターンに興味があることです。私はsed
とawk
でこれを行うための解決策を持っていますが、1つのジョブを実行するために複数のファイルを作成することにつながります。この仕事は、Pythonで行うことができるはずですが、私はどこから読んで始めてこれを学ぶべきか分かりません。私はいくつかの進歩を遂げている正規表現にまで読んで、それを信じるかどうかされています
EDIT !最初にファイルを1行ずつ読み込み、リストを逆順にしてから、そのリストを構成するすべての文字列を結合します。私は今や1つの大きな複数行の文字列で終わります。次に、re
モジュールを使って正規表現r'Distance matrix(.*?)Input orientation'
を作成します。私の最初のパターンは "Distance matrix"で、次に0個以上のすべての文字がマッチしているが、レイジーな方法でマッチ)、そして最後のパターン "Input orientation"を入力します。テストのための
with open(inputfile,"r") as input_file:
input_file_lines = input_file.readlines()
reverse_lines = input_lines[::-1]
string = ''.join(reverse_lines)
match = re.search('Distance matrix(.*?)Input orientation', string, re.DOTALL).group(1)
サンプルデータファイル:
Item Value Threshold Converged?
Maximum Force 0.005032 0.000450 NO
RMS Force 0.001066 0.000300 NO
Maximum Displacement 0.027438 0.001800 NO
RMS Displacement 0.007282 0.001200 NO
Predicted change in Energy=-8.909077D-05
GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
Input orientation:
---------------------------------------------------------------------
Center Atomic Atomic Coordinates (Angstroms)
Number Number Type X Y Z
---------------------------------------------------------------------
1 6 0 Incorrect Incorrect Incorrect
2 1 0 Incorrect Incorrect Incorrect
3 1 0 Incorrect Incorrect Incorrect
4 1 0 Incorrect Incorrect Incorrect
5 17 0 Incorrect Incorrect Incorrect
6 9 0 Incorrect Incorrect Incorrect
---------------------------------------------------------------------
Distance matrix (angstroms):
1 2 3 4 5
1 C 0.000000
2 H 1.080163 0.000000
3 H 1.080326 1.809416 0.000000
4 H 1.080621 1.810236 1.810685 0.000000
5 Cl 1.962171 2.470702 2.468769 2.465270 0.000000
6 F 2.390537 2.343910 2.357275 2.380515 4.352568
6
6 F 0.000000
Input orientation:
---------------------------------------------------------------------
Center Atomic Atomic Coordinates (Angstroms)
Number Number Type X Y Z
---------------------------------------------------------------------
1 6 0 Correct Correct Correct
2 1 0 Correct Correct Correct
3 1 0 Correct Correct Correct
4 1 0 Correct Correct Correct
5 17 0 Correct Correct Correct
6 9 0 Correct Correct Correct
---------------------------------------------------------------------
Distance matrix (angstroms):
1 2 3 4 5
1 C 0.000000
2 H 1.080516 0.000000
3 H 1.080587 1.801890 0.000000
4 H 1.080473 1.801427 1.801478 0.000000
5 Cl 1.936014 2.458132 2.459437 2.460630 0.000000
6 F 2.414588 2.368281 2.365651 2.355690 4.350586
これまでにPythonで何を試しましたか?これはあまりに複雑すぎるべきではありません。 – asongtoruin
あなたは私がこの問題に関連して試したことを意味しますか?もしそうなら、何もしません。 – Yoda
まず、あなた自身に何らかの努力を払うべきです。例えば、Pythonでテキストファイルを読む方法を知っていますか?それがあなたの最初の一歩です。 – asongtoruin