python - 遍历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]
到目前为止我所拥有的不正确,但我不知道如何解决它。
解决方案
看来您的 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']
推荐阅读
- java - Java Regex 用于两个子字符串之间不包含特定子字符串的模式
- dynamics-crm - 在 fetchXml Dynamics CRM 查询中使用条件仅获取具有非数字值的记录
- python - 如何在 LLDB 中写入 XMM 寄存器
- java - 使用 ID 的单向 @OneToOne
- c# - 我想从 C# 中的文本文件中搜索、删除和更新
- python - 在 Python 中使用 MagicMock 时面临的问题
- python - 为 django 中的新租户自动创建新用户
- python - 如何根据文本的情绪推荐活动?
- angular - 未定义标识符“长度”。'null' 不包含这样的成员 ng(0)
- electron - 如何在 executeJavascript 中使用 ipcRender?