python - 格式化 PyYAML dump() 输出

标签 python yaml pyyaml

我有一个字典列表,我想对其进行序列化:

list_of_dicts = [ { 'key_1': 'value_a', 'key_2': 'value_b'},
                  { 'key_1': 'value_c', 'key_2': 'value_d'},
                  ...
                  { 'key_1': 'value_x', 'key_2': 'value_y'}  ]

yaml.dump(list_of_dicts, file, default_flow_style = False)

产生以下内容:

- key_1: value_a
  key_2: value_b
- key_1: value_c
  key_2: value_d
(...)
- key_1: value_x
  key_2: value_y

但我想得到这个:

- key_1: value_a
  key_2: value_b
                     <-|
- key_1: value_c       | 
  key_2: value_d       |  empty lines between blocks
(...)                  |
                     <-|
- key_1: value_x
  key_2: value_y

PyYAML documentation非常简短地讨论了 dump() 参数,并且似乎没有关于这个特定主题的任何内容。

手动编辑文件以添加换行符大大提高了可读性,之后结构仍然可以正常加载,但我不知道如何让转储方法生成它。

一般来说,除了简单的缩进之外,还有什么方法可以更好地控制输出格式?

最佳答案

使用库没有简单的方法来做到这一点(yaml dumper 语法树中的节点对象是被动的,不能发出这个信息),所以我最终得到了

stream = yaml.dump(list_of_dicts, default_flow_style = False)
file.write(stream.replace('\n- ', '\n\n- '))

关于python - 格式化 PyYAML dump() 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14228915/

相关文章:

python - 如何知道 seq2seq 模型中是否达到了纪元点?

ruby-on-rails - 从散列/YAML 中删除所有空元素?

python - 基于 YAML 数据的条件 Python for 循环

python - 是否可以在 YAML 中锚定文字 block ?

python - 如何将字符串中的base64值更改为字节?

python - 检查脚本用户是否具有类似 root 权限的最佳方法是什么?

java - springboot 外部配置 - 配置文件特定配置

python - 如何通过Python在yaml文件中的一个标签下添加一个列表

python - 你可以在 vim 中对视觉选择的文本执行什么?

r - 从 knitr 中的子文档中剥离 YAML