【问题标题】:YAML - keep text formatting in new documentYAML - 在新文档中保留文本格式
【发布时间】:2020-11-21 04:26:26
【问题描述】:

我有什么:

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

我希望使用 doc 分隔符将 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)

【问题讨论】:

    标签: yaml ruamel.yaml


    【解决方案1】:

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

    如果你有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 库确实(错误地)假定文档根级别的文字样式标量需要缩进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      相关资源
      最近更新 更多