Pyyaml无法解析包含缩进的块的yaml文件(使用|或>)

问题描述 投票:0回答:1

[我正在尝试编写python脚本来分析包含块文字中包含markdown的yaml文件。

简单的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文件使用管道来逃避markdown块时(如用例所需要的那样,例如:

]
---
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个回答
2
投票

正如您自己说的那样,块标量必须为indented。所以这是正确的语法:

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

标题中不能包含内容。您可能需要使用|-而不是|来修剪尾随的换行符。

© www.soinside.com 2019 - 2024. All rights reserved.