如何在嵌套结构中存储层次信息

问题描述

希望你们都做得很好!

以下是从文档中提取的 .TXT 文件。 我希望阅读包含以下内容的文本文件

1 Main heading 1
1.1 Sub-heading 1
1.2 Sub-heading 2
2 Main heading 2
2.1 Sub-heading 1
2.1.1 Sub-Sub-heading 1
2.1.2 Sub-Sub-heading 2

阅读后,我想动态地将它存储到 Python 字典中,即嵌套列表如下:

{"file name": { "Main heading 1": { "Sub-heading 1" : [],"Sub-heading 2" : [] }},{ "Main heading 2": { "Sub-heading 1": [ "Sub-Sub-heading 1","Sub-Sub-heading 2" ] } } }

以上不是一个固定的结构,可以是动态的不同文件,我将在一个循环中进一步自动化这个过程。 我是嵌套字典的新手,并且坚持使用“.txt 文件 -> JSON”转换阶段。在这方面的任何帮助都会非常有帮助。谢谢!!

解决方法

import json

toc = """1 Main Heading 1
1.1 Sub-heading 1
1.2 Sub-heading 2
2 Main Heading 2
2.1 Sub-heading 1
2.1.1 Sub-Sub-heading 1
2.1.2 Sub-Sub-heading 2"""

myfile = 'myfile'

data = {myfile:{}}
for line in toc.splitlines():
    levels,title = line.split(' ',maxsplit=1)
    levels = levels.rstrip('.').split('.')
    if len(levels) == 1:
        heading = title
        data[myfile][heading] = {}
    elif len(levels) == 2:
        sub_heading = title
        data[myfile][heading][sub_heading] = []
    if len(levels) == 3:
        data[myfile][heading][sub_heading].append(title)

print(json.dumps(data,indent=4))

输出

{
    "myfile": {
        "Main Heading 1": {
            "Sub-heading 1": [],"Sub-heading 2": []
        },"Main Heading 2": {
            "Sub-heading 1": [
                "Sub-Sub-heading 1","Sub-Sub-heading 2"
            ]
        }
    }
}