python的极端初学者(对编码有点陌生)。搜索了一下,得到了一些有用的提示,但我的特殊情况比其他相关的 stackoverflow 帖子要复杂一些(至少我可以找到)。
我有一个结果文本文件。文件中有一个特定的部分写着“摘要”,这是我想要集中收集的整个部分。之后_
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] 只有该部分的最后一行的条目
非常感谢您的意见!