将列表包装到多行yaml上

将列表包装到多行yaml上,yaml,Yaml,在YAML中,我知道可以将字符串包装在多行上,如下所示: my_string: this is my very very very very very reeeeeeeally quite long string my_list: - this - is - my - reaaaaally - long - list 相当于: my_string:> this is my very very very very

在YAML中,我知道可以将字符串包装在多行上,如下所示:

my_string: this is my very very very very very reeeeeeeally quite long string
my_list:
    - this
    - is
    - my 
    - reaaaaally
    - long 
    - list
相当于:

my_string:> 
       this is my very very very very
       very reeeeeeeally quite long string
可以用列表做同样的事情吗?比如:

[my, very, long, list, that, is, waaaaaaaaaaaaaaay, tooooo, long]
写为:

my_list:>
     [my, very, long, 
     list, that, is, 
     waaaaaaaaaaaaaaay, tooooo, long]
但这些文件分为多行,没有具体说明这一点。当我尝试以上面的方式加载YAML文件时,我得到了错误:

yaml.scanner.ScannerError: mapping values are not allowed here

刚刚发现,YAML还有另一种列表语法,如下所示:

my_string: this is my very very very very very reeeeeeeally quite long string
my_list:
    - this
    - is
    - my 
    - reaaaaally
    - long 
    - list
这允许我包装一个列表

您拥有的是一个列表,不需要将它放在一行中。但是,您确实希望相对于它所属的(映射)键保持缩进(尽管有些解析器放宽了这一要求):

或者,您可以决定使用,但由于每个序列元素都有自己的行,因此灵活性较低:

my_list:
- my
- very
- long
- list
- that
- is
- waaaaaaaaaaaaaaay
- tooooo
- long
在这种情况下,您可以但不必在列表元素之前相对于映射键缩进破折号(
-

您得到错误
此处不允许映射值
,很可能是因为您在

my_list:>
     [my, very, long, 
     list, that, is, 
     waaaaaaaaaaaaaaay, tooooo, long]
xyz: 123
你在上面得到了这个错误。原因是,因为冒号后面没有空格,
my_list
从来都不是映射的关键,而是多行标量(字符串)的开头,其中嵌入的换行符转换为空格。它本质上等同于写作:

"my_list:> [my, very, long, list, that, is, waaaaaaaaaaaaaaay, tooooo, long]"

因为冒号后面的空格丢失。

第二个和最后一个示例都是带有嵌入换行符的单字符串标量(请尝试将它们粘贴到中)。如果要指定从
my_string
到值的映射,必须在冒号后面包含空格(或换行符)。您的错误消息可能来自下一行,因为您不能并列标量和键/值对。