YAML 中的管道数字破折号是什么?

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

我刚刚开始在Python中使用

ruamel.yaml
,我动态地编写了一个字典,其中一些键包含根据我可以控制多行字符串的格式吗?;我注意到,有时输出符合预期:

      - mystring: |-
          Here line 1 of my string;
          Here another line 2 of my string

...但有时我会得到这样的输出:

      - mystring: |2-
           (comment) here line 1;
          "and" here line 2 of my string

根据https://yaml-multiline.info/,我知道在管道破折号

|-
中,管道是“块样式指示器”,破折号是“块咀嚼指示器” - 但我不知道理解管道数字破折号中的数字应该代表什么,比如说
|2-

https://yaml-multiline.info/ 有一个交互式小程序,允许您设置“包括缩进指示器”,但在这种情况下,可以使用“块标量样式:保留换行符(文字)”和“块 Chomping” :末尾没有换行符(条带)”,您会得到 |-2

,即管道破折号数字 - 不是管道数字破折号。

那么管道数字破折号

|2-

 在 YAML 中意味着什么?

yaml ruamel.yaml
1个回答
0
投票
通常,块样式文字标量的缩进由其第一行决定,即相对于

|-

 出现的行缩进了多少。一旦 YAML 解析器找到缩进较少的行,它就会假定文字标量已在此行之前结束。转储时的缩进量通常为 2,但在解析期间会从文字样式标量的第一个非空白行开始扫描。

但是,如果在转储期间表示为文字样式标量的字符串以空格开头,则第一行将有额外的缩进,第二行将触发文字标量结尾,因为它缩进。在这种情况下,转储例程明确指示应假定多少个字符的缩进级别,在您的情况下为

|2-

,因此字符缩进。因此,你的 Python 字符串可能看起来像 
" (comment) here line 1;\n "and" here line 2 of my string"
(注意前导空格)。

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