Символ вертикальной черты в конце строки в YAML означает, что любой последующий текст с отступом должен интерпретироваться как многострочное скалярное значение. См. Спецификацию YAML .
В частности, вертикальная черта указывает, что (за исключением отступа) скалярное значение следует интерпретировать буквально таким образом, чтобы сохранить новые строки. И наоборот, >
символ указывает, что следует многострочный "свернутый" скаляр, означающий, что новые строки преобразуются в пробелы. Например:
>>> import yaml
>>> yaml.load("""
... |
... This is a multi-line
... literal style scalar.
... """)
'This is a multi-line\nliteral style scalar.\n'
>>> yaml.load("""
... >
... This is a multi-line
... folded scalar; new lines are folded into
... spaces.
... """)
'This is a multi-line folded scalar; new lines are folded into spaces.\n'
Эта 6+
часть представляет собой индикатор отступа (явное указание того, сколько пространств для отступа следует использовать) с «индикатором пережевывания», +
который контролирует, как следует обрабатывать лишние пробелы в конце скалярного литерала.
Ошибка, которую вы получаете, является сложной: это потому, что отступ должен быть относительно текущего элемента уровня блока. Таким образом, в этом случае это должно быть 4+
вместо того, 6+
потому что последний элемент уровня блока - это элемент массива (указанный -
), а литерал имеет отступ 4 от него. Как ни странно, final: |
отображение не считается блочным элементом, даже если его значение является многострочным. Если задуматься, в этом есть смысл - это всего лишь однострочное сопоставление «ключ: значение». Значение просто использует специальный синтаксис для многострочных скалярных значений. Непонятно, но как-то непротиворечиво ...