我有一个如下的YAML文件:
- workload:
name: cloud1
param:
p1: v1
p2: v2
- workload:
name: cloud2
param:
p1: v1
p2: v2
我可以使用以下Python脚本解析该文件:
^{pr2}$输出:
name cloud1
param {'p1': 'v1'}
但我要找的是:
workload1 = cloud1
workload1_param_p1 = v1
workload1_param_p2 = v2
workload2 = cloud2
workload2_param_p1 = v1
workload2_param_p2 = v2
输出与输入不匹配,因为YAML文件的顶层是一个映射到Python
list
的序列。另一件不完全清楚的事情是
workload
,尤其是workload1
中的1
来自何处。在下面,我假设它们来自构成序列元素的映射键。序列元素的位置(从1开始,因此idx+1
)。 从值的副本中弹出name
,以便可以递归地正确转储其余值:给出:
^{pr2}$这是使用ruamel.yaml,一个yaml1.2解析器完成的,我是其作者。如果您只有yaml1.1代码(PyYAML支持),您仍然应该使用}是在{}之前打印的(PyYAML不能保证)。在
ruamel.yaml
,因为它的往返加载器保证您的{相关问题 更多 >
编程相关推荐