Pyyaml 无法解析包含缩进块的 yaml 文件(使用 | 或 >)
Pyyaml unable to parse a yaml file containing an indented block (using | or >)
我正在尝试编写 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 文件使用管道转义降价块时(我的用例需要),例如:
---
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()
任何人都可以提供任何建议或解决方法吗?
正如您自己所说,块标量必须缩进。所以这是正确的语法:
---
product name: |
Azure big VM
product version: 1.0.0
Operating System: RHEL
disk type: premium ssd
location: uk-south
页眉中不能有内容。您可能希望使用 |-
而不是 |
来 trim 尾随换行符。
我正在尝试编写 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 文件使用管道转义降价块时(我的用例需要),例如:
---
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()
任何人都可以提供任何建议或解决方法吗?
正如您自己所说,块标量必须缩进。所以这是正确的语法:
---
product name: |
Azure big VM
product version: 1.0.0
Operating System: RHEL
disk type: premium ssd
location: uk-south
页眉中不能有内容。您可能希望使用 |-
而不是 |
来 trim 尾随换行符。