我有一个字典列表,我想对其进行序列化:
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/