gpt4 book ai didi

python - YAML 中映射的映射中的文字

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:48 24 4
gpt4 key购买 nike

如何使用 YAML 在映射的映射中创建文字?

我正在尝试使用 PyYAML 将文字放入 YAML 中的映射映射中。基于YAML specs映射的映射是通过以下方式实现的:

Mark McGwire: {hr: 65, avg: 0.278}
Sammy Sosa: {
hr: 63,
avg: 0.288
}

而保留换行符的文字是通过以下方式完成的:

stats: |
63 Home Runs
0.288 Batting Average

现在我尝试将文字与映射的映射结合起来,如下所示:

Sammy Sosa: {
hr: 63,
avg: 0.288,
stats: |
63 Home Runs
0.288 Batting Average
}

并抛出错误:

yaml.scanner.ScannerError: while scanning for the next token
found character '|' that cannot start any token
in "test.yml", line 4, column 12

是否有其他方法或解决方法可以将文字放入 YAML 中的映射的映射中?

最佳答案

您的“字面量”更正式地称为 literal block style scalar 。除了block styleflow style 。您正在使用与键 Sammy Sosa 关联的值的流样式。

flow style you are not allowed to have block style

YAML allows flow nodes to be embedded inside block collections (but not vice-versa).

,但这就是您尝试对键 stats 的值执行的操作。除此之外,您也没有足够缩进文字标量。

通过删除匹配的 {} 和尾随 ,将流样式映射更改为 block 样式。对齐键( block 样式中需要)并适当缩进文字标量(即比 stats 的起始列多)。

这是有效的 YAML,相当于您想要实现的目标:

Sammy Sosa:
hr: 63
avg: 0.288
stats: |
63 Home Runs
0.288 Batting Average

block 样式映射中的第一个示例流程样式映射也可以重写为 block 样式映射中的 block 样式映射,如下所示:

Mark McGwire: 
hr: 65
avg: 0.278
Sammy Sosa:
hr: 63
avg: 0.288
<小时/>

为此目的没有区别,但您还应该注意,您使用的是 YAML 1.2 规范(从 2009 年开始),但 Python 的 PyYAML 库仅支持大多数较旧的 YAML 1.1(从 2005 年开始) )。

关于python - YAML 中映射的映射中的文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com