分析缩进的空格d

2024-04-19 22:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些数据看起来像YAML,但不是。这是一个例子

An instance of A
  objectID=123
  family=abc

An instance of A
  objectID=234
  family=bcd
  List of 4 X elements:
    An instance of X:
      objectID=222
      name=ccc
    An instance of X:
      objectID=333

等等。。。你知道吗

我要想办法让它看起来更像这样:

[
  {'name': 'An instance of A',
   'data': [
     {'objectID': 123,
      'family': 'abc'
     }
   ]
 },
 ...

我曾尝试创建一些递归函数来解析它,但结果却是一团糟。你知道吗

我并不要求提供一个完整的工作示例,但是在python中实现这一点的最佳方法是什么? 自动调用功能?使用另一个lib(我还没有找到)?用另一种语言来帮助我把整个东西嵌入python?你知道吗


Tags: of数据instancenameanyamlelementsfamily
1条回答
网友
1楼 · 发布于 2024-04-19 22:22:14

使用堆栈,当您找到更多或更少的缩进级别时,从中推送和弹出项目;堆栈上的每个级别都保存缩进深度和条目:

stack = [(0, {})]  # indentation level, top-level entry
entry = stack[-1][1]

for line in input:
    line = line.strip()
    if not line: continue

    indentation = len(input) - len(input.lstrip())
    if indentation > stack[-1][0]:  # indented further? New entry
        entry = stack[-1][1]['data'] = {}
        stack.append((indentation, entry)) # push
    else:
        while indentation < stack[-1][0]:  # indentation dropped
            del stack[-1]       # pop
            entry = stack[-1][1]

    # process line and add to entry

result = stack[0][1]

相关问题 更多 >