El símbolo de barra vertical al final de una línea en YAML significa que cualquier texto con sangría que sigue debe interpretarse como un valor escalar de varias líneas. Consulte las especificaciones de YAML .
Específicamente, la barra vertical indica que (excepto por la sangría) el valor escalar debe interpretarse literalmente de tal manera que conserve las nuevas líneas. Por el contrario, el >
carácter indica que sigue el escalar "plegado" de varias líneas, lo que significa que las nuevas líneas se convierten en espacios. Por ejemplo:
>>> 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'
La 6+
parte es el indicador de sangría (una especificación explícita de cuántos espacios de sangría deben usarse) con el "indicador de mordida"+
que controla cómo se deben manejar los espacios en blanco adicionales al final del literal escalar.
El error que está recibiendo es complicado: es porque la sangría debe ser relativa al elemento actual a nivel de bloque. Entonces, en este caso debería ser en 4+
lugar de 6+
porque el último elemento a nivel de bloque es el elemento de la matriz (especificado por -
) y el literal tiene una sangría 4 de él. Sorprendentemente, el final: |
mapeo no se considera un elemento de bloque a pesar de que su valor tiene varias líneas. Tiene sentido si lo piensas - sigue siendo sólo un mapeo "clave: valor" de una sola línea. El valor simplemente usa una sintaxis especial para valores escalares multilínea. Confuso, pero de alguna manera consistente ...