我有字典,我想序列的列表:格式化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()
的討論非常簡短,似乎並不hav在這個特定主題上的任何東西。
手動編輯文件以添加換行提高了可讀性,並且結構仍然正常加載後,但我不知道如何使轉儲方法生成它。
而且一般來說,除了簡單的縮進之外,還有更多的控制輸出格式的方法嗎?
謝謝!必須使用類似的列表格式。 PyYAML不會在'-'之前放入縮進,而我們使用的YAML使用庫期望在那裏有一些縮進。所以我們必須做'replace'(' - ',' - ')' – Andrei
這個節點是被動的是真的但是不相關的,因爲節點不會發出任何其他信息(即'ScalarNode's不會發出它們自己的值)。'Emitter'確實得到了一個節點的值(如果適當的話)併發出它,如果你在節點上附加了額外的信息,並且增強了相關的Emitter方法來處理這些額外的信息(就像我在'ruamel.yaml'中做的那樣),那麼絕對沒有必要進行那種粗糙的基於字符串的後期處理。 – Anthon
@Andrei使用['ruamel.yaml'](https://pypi.python.org/pypi/ruamel.yaml)你可以設置'yaml.indent(sequence = 3,offset = 1)',並獲得該輸出沒有後期處理。 – Anthon