使用具有预期样式的python生成yaml文件[重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我使用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'
python python-3.x yaml pyyaml
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))
© www.soinside.com 2019 - 2024. All rights reserved.