python - 在Python中解析具有层次结构的文件

标签 python data-structures file-io

我正在尝试将工具的输出解析为数据结构,但我在做正确的事情时遇到了一些困难。该文件如下所示:

 Fruits
   Apple
     Auxiliary
     Core
     Extras
   Banana
     Something
   Coconut
 Vegetables
   Eggplant
   Rutabaga

您可以看到顶级项目缩进了一个空格,而其下的项目每一层都缩进了两个空格。这些项目也按字母顺序排列。

如何将文件转换为类似于 ["Fruits", "Fruits/Apple", "Fruits/Banana", ..., "Vegetables", "Vegetables/Eggplant", “蔬菜/芜菁甘蓝”]?

最佳答案

>>> with open("food.txt") as f:
...     res = []
...     s=[]
...     for line in f:
...         line=line.rstrip()
...         x=len(line)
...         line=line.lstrip()
...         indent = x-len(line)
...         s=s[:indent/2]+[line]
...         res.append("/".join(s))
...     print res
... 
['Fruits', 'Fruits/Apple', 'Fruits/Apple/Auxiliary', 'Fruits/Apple/Core', 'Fruits/Apple/Extras', 'Fruits/Banana', 'Fruits/Banana/Something', 'Fruits/Coconut', 'Vegetables', 'Vegetables/Eggplant', 'Vegetables/Rutabaga']

关于python - 在Python中解析具有层次结构的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2554474/

相关文章:

python - RabbitMQ:如何在 Python 生产者和消费者之间发送 Python 字典?

python - 如何将包含日期的 csv 数据加载到 numpy 数组中?

python - PANDAS:传递的索引形状不正确,不确定如何修复

python - mainwindow.close() 期间的信号

data-structures - 如何最好地表示 3D 欧几里得空间中的网格图?

c++ - 二进制文件的 ifstream 与 fread

c++ - 程序的计算复杂度

算法:找到包含整个域的最少集合数

c - 从文件读取时出现错误

java - 文件未找到?