如何用Python生成指定格式的YAML文件?
解决Python生成指定格式YAML的问题
正确代码实现
要生成你需要的YAML格式,首先要构建对应的数据结构——steps是一个键,对应的值是列表,列表中每个元素是包含A和B的字典,其中B的值又是嵌套字典。
import yaml # 构建符合目标格式的数据结构 data = { 'steps': [ {'A': 'a', 'B': {'C': 'c', 'D': 'd', 'E': 'e'}}, {'A': 'a1', 'B': {'C': 'c1', 'D': 'd1', 'E': 'e1'}}, {'A': 'a2', 'B': {'C': 'c2', 'D': 'd2', 'E': 'e2'}} ] } with open('result.yml', 'w') as yaml_file: # sort_keys=False 确保字典键的顺序和定义一致,避免A、B被排序调换 yaml.dump(data, yaml_file, default_flow_style=False, sort_keys=False)
生成的目标YAML格式
运行上述代码后,result.yml的内容将完全符合你的需求:
steps: - A: a B: C: c D: d E: e - A: a1 B: C: c1 D: d1 E: e1 - A: a2 B: C: c2 D: d2 E: e2
你之前代码的问题分析
- 结构逻辑错误:你把YAML中的列表标记
-和A合并成了字典的键,这完全违背了YAML的语法规则。-是列表元素的标识,所以steps对应的应该是列表,而非单个字典。 - 缩进错误根源:因为结构错误,
B被当成了和'- A'同级的字典键,自然无法实现和A对齐的缩进。只有把A和B放在同一个列表元素的字典中,才能让B缩进一级和A对齐。
内容的提问来源于stack exchange,提问作者Bondgirl
相关产品推荐
相关产品推荐

