python - 使用具有预期样式的 python 生成 yaml 文件
问题描述
我正在使用 yaml 模块生成 yaml 文件,但实际上我没有得到正确的预期输出,下面是代码:
import yaml
list1 = [{'Test01': '01', 'Test02': '02'}, {'Test03': '03', 'Test04': '04'}]
some_data = {"data": list1}
yaml_data = {
'version': '1.0'
}
yaml_data.update(some_data)
print(yaml.dump(yaml_data, default_flow_style=False))
实际输出:
data:
- Test01: '01'
Test02: '02'
- Test03: '03'
Test04: '04'
version: '1.0'
预期输出:
data:
-
Test01: '01'
Test02: '02'
-
Test03: '03'
Test04: '04'
version: '1.0'
解决方案
您可以使用OrderedDict
而不是dict
保留顺序yaml.dump()
from collections import OrderedDict
import yaml
list1 = [{'Test01': '01', 'Test02': '02'}, {'Test03': '03', 'Test04': '04'}]
some_data = OrderedDict({"data": list1})
yaml_data = OrderedDict({
'version': '1.0'
})
yaml_data.update(some_data)
print(yaml_data)
def represent_dictionary_order(self, dict_data):
return self.represent_mapping('tag:yaml.org,2002:map', dict_data.items())
def setup_yaml():
yaml.add_representer(OrderedDict, represent_dictionary_order)
setup_yaml()
print(yaml.dump(yaml_data, default_flow_style=False))
推荐阅读
- java - “变量可能尚未初始化” - 但我希望用户输入填写变量
- javascript - Three.js:场景的子节点似乎与场景子节点的子节点具有不同的矩阵位置?
- r - 如何在两个日期之间填写日期
- python - 为什么我每次都得到 F 的成绩?
- python - 如何使用python准确地从该图像中提取一行数据
- ml.net - ML.Net 模型构建器 - 为什么会出现 SQL 数据错误“关键字 'Open' 附近的语法不正确”?
- python - PySpark 中的标准化和标准缩放数据集
- javascript - Javascript/Json 根据属性内的键值显示键值列表
- java - 如何打印 get 语句的返回
- r - 在R中将两个循环组合成具有特定条件的单个循环