【问题标题】:Pyyaml unable to parse a yaml file containing an indented block (using | or >)Pyyaml 无法解析包含缩进块的 yaml 文件(使用 | 或 >)
【发布时间】:2020-07-22 02:25:51
【问题描述】:

我正在尝试编写一个 python 脚本来解析一个 yaml 文件,该文件包含包含在块文字中的 markdown。

简单的python脚本:

import yaml

file = open('single-source.yaml')

documentation = yaml.load(file, Loader=yaml.FullLoader)

print(documentation)

在解析简单的 Yaml 文件时效果很好,例如

---
product name: Azure big VM
product version: 1.0.0
Operating System: RHEL
disk type: premium ssd
location: uk-south

但是,当我尝试使用 YAML 文件执行此操作时,使用管道来转义降价块(这是我的用例所需要的),例如:

---
product name: | Azure big VM
product version: 1.0.0
Operating System: RHEL
disk type: premium ssd
location: uk-south

它开始抛出大量指向 python 目录中 pyyaml 文件的引用错误,如下所示。它为 /yaml 目录中的各种文件吐出了其中的大约 8 个。

 File "script.py", line 5, in <module>
    documentation = yaml.load(file, Loader=yaml.FullLoader)   File "C:\Users\Ryan\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\yaml\__init__.py", line 114, in load
    return loader.get_single_data()

任何人都可以提供任何建议或解决方法吗?

【问题讨论】:

    标签: python python-3.x yaml pyyaml


    【解决方案1】:

    正如你自己所说,块标量必须缩进。所以这是正确的语法:

    ---
    product name: |
      Azure big VM
    product version: 1.0.0
    Operating System: RHEL
    disk type: premium ssd
    location: uk-south
    

    标题中不能有内容。您可能希望使用 |- 而不是 | 来修剪尾随换行符。

    【讨论】:

    猜你喜欢
    • 2021-05-17
    • 2012-07-20
    • 2017-12-08
    • 1970-01-01
    • 2021-04-01
    • 2019-02-13
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多