python yaml dump_格式化PyYAML dump()输出

PyYAML文档对dump()参数讨论简单,控件不由其提供。为保留加载YAML中的空行和注释,开发了ruamel.yaml库,它是PyYAML超集,有YAML 1.2兼容性。使用该库可获得与输入相同输出,还能从头生成所需输出,且允许保留或设置多种格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyYAML文档只简单地讨论了dump()参数,因为没有太多要说的。这种控件不是由PyYAML提供的。

为了允许在加载的YAML中保留这样的空(和注释)行,我开始开发^{}库,它是已停止的PyYAML的超集,具有YAML 1.2兼容性,添加了许多特性,并修复了错误。使用ruamel.yaml您可以:import sys

import ruamel.yaml

yaml_str = """\

- key_1: value_a

key_2: value_b

- key_1: value_c

key_2: value_d

- key_1: value_x # a few before this were ellipsed

key_2: value_y

"""

yaml = ruamel.yaml.YAML()

data = yaml.load(yaml_str)

yaml.dump(data, sys.stdout)

并获得与输入字符串(包括注释)完全相同的输出。

您还可以从头开始生成所需的输出:import sys

import ruamel.yaml

yaml = ruamel.yaml.YAML()

list_of_dicts = yaml.seq([ { 'key_1': 'value_a', 'key_2': 'value_b'},

{ 'key_1': 'value_c', 'key_2': 'value_d'},

{ 'key_1': 'value_x', 'key_2': 'value_y'} ])

for idx in range(1, len(list_of_dicts)):

list_of_dicts.yaml_set_comment_before_after_key(idx, before='\n')

ruamel.yaml.comments.dump_comments(list_of_dicts)

yaml.dump(list_of_dicts, sys.stdout)

使用yaml.seq()的转换是创建允许通过特殊属性附加空行的对象所必需的。

该库还允许保留/轻松设置字符串上的引号和文字样式、int(十六进制、八进制、二进制)和浮点格式。以及映射和序列的单独缩进规范(尽管不是针对单个映射或序列)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值