我刚刚开始在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 解析器找到缩进较少的行,它就会假定文字标量已在此行之前结束。转储时的缩进量通常为 2,但在解析期间会从文字样式标量的第一个非空白行开始扫描。但是,如果在转储期间表示为文字样式标量的字符串以空格开头,则第一行将有额外的缩进,第二行将触发文字标量结尾,因为它缩进。在这种情况下,转储例程明确指示应假定多少个字符的缩进级别,在您的情况下为
|2-
,因此字符缩进。因此,你的 Python 字符串可能看起来像
" (comment) here line 1;\n "and" here line 2 of my string"
(注意前导空格)。