<p>您没有跟踪dict的历史记录。我添加了上一个dict,并在存在'}'时将dict还原为上一个值。请在下面找到解决方案。希望有帮助。你知道吗</p>
<pre><code>import re
import pprint
def get_data() :
a = []
a.append("Chain1 {")
a.append(" Chain1_value1")
a.append(" Chain1_Chain2 {")
a.append(" Chain1_Chain2_value1")
a.append(" Chain1_Chain2_Chain3 {")
a.append(" Chain1_Chain2_Chain3_value1")
a.append(" Chain1_Chain2_Chain3_value2")
a.append(" Chain1_Chain2_Chain3_value3")
a.append(" }")
a.append(" Chain1_Chain2_Chain4 {")
a.append(" Chain1_Chain2_Chain4_value1")
a.append(" Chain1_Chain2_Chain4_value2")
a.append(" Chain1_Chain2_Chain4_value3")
a.append(" }")
a.append(" }")
a.append("}")
return a
def get_dict(input_chain):
dict_test = {}
current_dict = dict_test
previous_dict = dict_test #this was missing
for line in input_chain:
line = line.strip()
if re.search(r"{$", line):
previous_dict = current_dict
current_dict[line] = {}
current_dict = current_dict[line]
elif re.search(r'}$', line):
current_dict = previous_dict #revert to last dict at the end of the block
else:
current_dict[line] = ""
return dict_test
def main():
a = get_data()
b = get_dict(a)
pprint.pprint(b)
if __name__ == '__main__':
main()
</code></pre>
<p><strong>输出</strong></p>
<pre><code>{'Chain1 {': {'Chain1_Chain2 {': {'Chain1_Chain2_Chain3 {': {'Chain1_Chain2_Chain3_value1': '',
'Chain1_Chain2_Chain3_value2': '',
'Chain1_Chain2_Chain3_value3': ''},
'Chain1_Chain2_Chain4 {': {'Chain1_Chain2_Chain4_value1': '',
'Chain1_Chain2_Chain4_value2': '',
'Chain1_Chain2_Chain4_value3': ''},
'Chain1_Chain2_value1': ''},
'Chain1_value1': ''}}
</code></pre>