解析 python 中的 yaml 文件格式

Parsing yaml file format in python

我有这种格式的yaml文件。我的数据块以“- Buffer: 0”开头。需要将该块存储在字典中并处理数据。

- {MinimumRequiredVersion: 1.2.1}
- baran
- afc90a
- [Device 0050, Device 0051, Device 0052, Device 0054, Device 0062, Device 7400, Device 740c]
- AllowNoFreeDims: false
  AssignedDerivedParameters: true
  DataType: 4
  IndexAssignmentsLD: [4, 5, 6, 7]
  IndexUnroll: 3
- - Buffer: 0
    AggressivePerfMode: 1
    AssertFree0ElementMultiple: 1
    AssertFree1ElementMultiple: 1
    ...
  - Buffer: 0
    AggressivePerfMode: 1
    AssertFree0ElementMultiple: 1
    ...
  - Buffer: 0
    AggressivePerfMode: 1
    AssertFree0ElementMultiple: 1
    AssertFree1ElementMultiple: 1
    ...
  - Buffer: 0
    AggressivePerfMode: 1
    AssertFree0ElementMultiple: 1
    AssertFree1ElementMultiple: 1
    ...
  - Buffer: 0
    AggressivePerfMode: 1
    AssertAlphaValue: false
    AssertBetaValue: false
    AssertCEqualsD: false
    AssertMinApproxSize: 3
    ...
  - 1LDSBuffer: 0
    AggressivePerfMode: 1
    AssertAlphaValue: false
    AssertBetaValue: false
    ...
- [2, 3, 0, 1]
- - - [512, 1, 1, 500000]
    - [8, 0.45]
  - - [512, 2, 1, 500000]
    - [8, 0.883]
- null

我使用下面的代码来解析 yaml 文件并打印,它有效。

with open(filename, "r") as f:
        data = yaml.load(f, yaml.SafeLoader)
        sorted_data = yaml.dump(data)
        print(sorted_data)

我不熟悉 python 和这种格式的 yaml 文件。任何指针我如何提取字典中的数据块(也可能是列表)在“- Buffer :0 ”到另一个“- Buffer :0 ”之间。我试过这个来获取块但没有成功。 打印({数据['缓冲区]})

data 是一个列表(其元素由 YAML 中的 - 指定)。因此,包含您似乎感兴趣的词典的列表在 data[5] 中 — 您可以看到它是另一层 - 项的另一个列表。具体来说,data[5][0]是一个字典(由YAML中的<key>:项指定):

{'Buffer': 0, 'AggressivePerfMode': 1, 'AssertFree0ElementMultiple': 1, 'AssertFree1ElementMultiple': 1}

data[5][0]["Buffer"]0