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] にはそのセクションの最後の行のエントリしかありません
ご意見をお寄せいただきありがとうございます。