YAML - 在新文档中保留文本格式

YAML - keep text formatting in new document

我有:

a: some meta info
b: more meta info
c: actual nicely
   formatted text that
   has line breaks 

我希望通过使用文档分隔符将 c 移动到新的 YAML 文档 ---

a: some meta info
b: more meta info
---
actual nicely
formatted text that has line breaks 
and so on

但是当我使用第二种选择时,我会丢失格式,比如换行等。

有没有办法可以使用后一种 YAML 方法格式并保留换行符?

我目前正在使用 ruamel.yaml 库来读取这个 yaml 和下面的函数来加载我的文件。

yaml.load_all(f, Loader=yaml.Loader)

如果您希望换行符位于您加载的值中,我建议将第二个文档设为文字样式标量。

如果你有 input.yaml:

a: some meta info
b: more meta info
--- |
actual nicely
formatted text that
has line breaks

然后这个程序:

from pathlib import Path
import ruamel.yaml

path_name = Path('input.yaml')


yaml = ruamel.yaml.YAML()
for data in yaml.load_all(path_name):
    print(repr(data))

给出:

ordereddict([('a', 'some meta info'), ('b', 'more meta info')])
'actual nicely\nformatted text that\nhas line breaks\n'

请注意,一些 YAML 库确实(错误地)假设文档根级别的文字样式标量需要缩进。