Я вижу, что могу установить стиль любой конкретный CommentedSeq через CommentedSeq.fa.set_flow_style(), который можно выполнить после загрузки данных yaml, но я бы предпочел настроить собственный репрезентатор для обработки этого.
Похоже, следующая функция работать после загрузки:
Код: Выделить всё
from ruamel.yaml import YAML
from ruamel.yaml.comments import CommentedMap, CommentedSeq
import sys
# Keys to enforce flow style for
keys_with_flow_style = ["categories", "classification"]
def set_flow_style_recursive(yamldata, flowkeys):
if isinstance(yamldata, (dict, CommentedMap)):
for k,v in yamldata.items():
if k in flowkeys:
if isinstance(v, (dict, CommentedMap)):
set_flow_style(v, flowkeys)
elif isinstance(v, (CommentedSeq)):
v.fa.set_flow_style()
set_flow_style(v, flowkeys)
elif isinstance(v, (dict, CommentedMap)):
set_flow_style(v, flowkeys)
elif isinstance(yamldata, (list, CommentedSeq)):
for item in yamldata:
set_flow_style(item, flowkeys)
yaml_data = """
data:
categories:
- CLNT
- TXN
- MKDT
- REFD
- PERS
- CODE
classification:
- RES
description: This application processes data
"""
yaml = YAML().load(yaml_data)
set_flow_style_recursive(yaml, keys_with_flow_style)
YAML().dump(yaml, syst.stdout)
Код: Выделить всё
"""
data:
categories: [CLNT, TXN, MKDT, REFD, PERS, CODE]
classification: [RES]
description: This application processes data
"""
Подробнее здесь: https://stackoverflow.com/questions/793 ... epresenter
Мобильная версия