首页 > 解决方案 > 遍历python中的yaml列表

问题描述

我正在尝试设置一个 yaml 文件,但我遇到了麻烦。我想layers包含一个图层名称列表,然后对于每个图层名称,我想列出相关的样式。这是我到目前为止所拥有的:

wms-server:
    name: weather
    url: ${CACHE_WMS}
    layers:
    - name: RADAR_1KM_RRAI
    styles: [TEMPERATURE, TEMPWINTER-LINEAR, TEMPWINTER, TEMPSUMMER-LINEAR, TEMPSUMMER, TEMPERATURE-LINEAR]
    - name: GDPS.ETA_TT
    styles: [BOLD, SIMPLE]

到目前为止我所拥有的不正确,但我不知道如何解决它。

标签: pythonyaml

解决方案


看来您的 yaml 文件需要进行一些格式化。尝试像这样更改它:

wms-server:
  name: weather
  url: ${CACHE_WMS}
  layers:
    - name: RADAR_1KM_RRAI
      styles: [TEMPERATURE, TEMPWINTER-LINEAR, TEMPWINTER, TEMPSUMMER-LINEAR, TEMPSUMMER, TEMPERATURE-LINEAR]
    - name: GDPS.ETA_TT
      styles: [BOLD, SIMPLE]

然后,您可以使用 Python 列出其中的数据(如果您没有 yaml 库,请执行 pip3 install pyyaml)。

import yaml
fi = open('yamlfile', 'r')
data = yaml.load(fi, Loader=yaml.FullLoader)
print(data)

for layer in data['wms-server']['layers']:
    print(layer['name'])
    print(layer['styles'])

那将打印:

RADAR_1KM_RRAI
['TEMPERATURE', 'TEMPWINTER-LINEAR', 'TEMPWINTER', 'TEMPSUMMER-LINEAR', 'TEMPSUMMER', 'TEMPERATURE-LINEAR']
GDPS.ETA_TT
['BOLD', 'SIMPLE']

推荐阅读