我想在YAML中的序列中包含多行。这是我的方法,但是在python中解析时遇到问题:
Element: |
- multiple lines
come here
这样,用Python解析时,仍会-
在解析数据中看到。似乎YAML无法理解这是一个列表。
您输入的内容不是列表,YAML只知道映射(构造为Pythondict
和序列(构造为Python list
))。
通常-
是块序列输入指示器,但是由于您在第一行以的值作为key的值启动了块样式文字Element
,因此|
,紧随其后的所有缩进量都是此标量的一部分(构造为Python字符串)。
您要做的是将指标带到文字标量之外:
Element:
- |
multiple lines
come here
如果您加载在Python中的一个变量data
,然后data['Element'][0]
将字符串'multiple lines\ncome here\n'
。也就是说:您的文字标量中的每个换行符都将是您的字符串中的换行符,并且该字符串上将有一个最终的换行符,而与跟随的空行数无关(这是剪切)。如果您希望结尾没有换行符,则使用|-
(剥离),如果您希望所有换行符直到缩进,则使用|+
(保持)。那些添加到的指标|
称为“砍伐指标”。
如果在名为的文件中包含以上内容input.yaml
:
import sys
from pathlib import Path
import ruamel.yaml
input = Path('input.yaml')
yaml = ruamel.yaml.YAML(typ='safe')
data = yaml.load(input)
print(f'{data["Element"][0]!r}') # print the representation, so you can see where the newlines are
这使:
'multiple lines\ncome here\n'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句