1

Python の超初心者 (コーディングに関してはやや初心者)。検索して、いくつかの役立つヒントを得ましたが、私の特定のケースは、他の関連するスタックオーバーフローの投稿よりも少し複雑です (少なくとも見つけることができました)。

結果のテキスト ファイルがあります。「概要」が書かれているファイルの特定の部分があり、それは私がコレクションに集中したい全体的なセクションです. その後_

Summary: 

行には、辞書にキーとして保存したい独自のデータを持つ5 つのサブセクションがあります。サブセクションは、level1、level2、-->level5 と呼ばれます。

各サブセクションの先頭には、そのサブセクションの名前のみを含む行があります。

level1:

要約すると、それぞれがそのサブセクションの行データを含む 5 つのキー (level1-->level5 というラベルが付いている) を持つ辞書を作成しますが、次のレベルに達したら、前のキーのデータの保存を停止するようにしてください。 .

これが私がこれまでに持っているものです(警告:以下は非常にずさんなコードであり、経験豊富なコーダーには苦痛を与える可能性があります):

results = sys.argv[1]
seen_start = False
seen_1 = False
seen_2 = False
seen_3 = False
seen_4 = False
seen_5 = False
results_matrix = {}
j = 'level1'
k = 'level2'
l = 'level3'
m = 'level4'
n = 'level5'

with open(results, "r") as f:

    for line in f:
        if line.find("Summary:") ==0:
            seen_start = True
            continue

        if seen_start:

            if line.find(j) ==0:
                seen_1 = True
                continue

            elif line.find(k) ==0:
                seen_1 = False
                seen_2 = True
                continue
            elif line.find(l) ==0:
                seen_2 = False
                seen_3 = True
                continue
            elif line.find(m) ==0:
                seen_3 = False
                seen_4 = True
                continue
            elif line.find(l) ==0:
                seen_4 = False
                seen_5 = True
                continue



        if seen_1 and line <> '\n':
            results_matrix[j] = (line.rstrip('\n'))
            if line.find(k) ==0:
                seen_1 = False
                seen_2 = True
                continue


        if seen_2 and line <> '\n' :
            results_matrix[k] = (line.rstrip('\n'))
            if line.find(l) ==0:
                seen_2 = False
                seen_3 = True
                continue
            print results_matrix[k]

信じられないかもしれませんが、コードは実際には最新のサブセクションを正しく保存しますが、のエントリをそのサブセクションの最後の行として保存します。つまり、results_matrix[k] はこのインスタンスで機能しますが、results_matrix[j] にはそのセクションの最後の行のエントリしかありません


ご意見をお寄せいただきありがとうございます。

4

1 に答える 1