如何在块中的新行之后开始列出密钥

莫里奇

在Python中使用内置的yaml包,是否有可能在列表指示符破折号之后以新行开始转储列表项?

代替此结构:

root:
  - name: a
    id: 0
  - name: b
    id: 1

我需要以下结构:

root:
  -
    name: a
    id: 0
  -
    name: b
    id: 1
安通

AFAIK PyYAML甚至不支持您指示的第一个输出:

import sys
import yaml as pyyaml

data = dict(root=[dict(name="a", id=0), dict(name="b", id=1)])
pyyaml.safe_dump(data, sys.stdout, default_flow_style=False, indent=4)

因此,

root:
-   id: 0
    name: a
-   id: 1
    name: b

如您所见,块序列项目指示器(-)没有在序列项目的缩进量内偏移,并且要做到这一点和/或获取额外的换行符,您将不得不更改PyYAML发射器的内部。

另一个内置的YAML库ruamel.yaml(免责声明:我是该程序包的作者),可以完全满足您的要求:

import sys
import ruamel.yaml

data = dict(root=[dict(name="a", id=0), dict(name="b", id=1)])

yaml = ruamel.yaml.YAML()
yaml.indent(sequence=4, offset=2)
yaml.compact_seq_map = False

yaml.dump(data, sys.stdout)

这使:

root:
  -
    name: a
    id: 0
  -
    name: b
    id: 1

顺便说一句,无论您说的是什么,我都不会称呼PyYAML或ruamel.yaml 内置的Python有一个标准库(包含电池),其中包含一个JSON解析器。但是标准库中没有YAML解析器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在第n行之后开始新的一列?

如何在句号,问号和感叹号之后开始新的一行?

如何在Java SWING的新行中开始内容?

如何在bash终端中输入/开始新行?

如何在linux中的特定空行之后插入新行?

如何在嵌入在div块中的输入标签之后的一行中显示按钮?

在列表中的第 4 个元素之后开始新行

如何在iMacros中数据源的最后一行之后重新开始

如何在Windows中列出已加载的SSH密钥(选美)

如何在树中插入新块?

如何在字典中获取密钥开始于

如何在数组中的字符串中开始新行?

如何在特定行之后插入新行

iOS - 从远程服务流式传输时如何在 UITextView 中开始新行

如何在不使用document.write()的情况下在Javascript中开始新行?

你如何在字符串/多行文本中开始一个新行

如何在sapui5中开始一个新行

如何在第n个单词之后在文本文档中创建新行?

如何在sed或cat的“>之后添加新行

如何在flex元素之后创建新行?

如何在输出之前在bash命令之后添加新行

在 SSRS-2008 中的字符串的两个单词之后开始新行

Lua:如何在角色之后开始比赛

如何在Rails中为Sidekiq设置新的密钥库?

如何列出/导出密钥库中的私钥?

如何在Eclipse中配置代码格式化程序以在枚举中的每个元素之后添加新行?

如何在Selenium中结束会话并开始新的会话?

如何在MySQL中填充从400000开始的新列

如何在OpenTest中开始新的测试会话?