Symbol pionowej kreski na końcu wiersza w YAML oznacza, że każdy następujący po nim tekst z wcięciem powinien być interpretowany jako wieloliniowa wartość skalarna. Zobacz specyfikację YAML .
Konkretnie, potok wskazuje, że (z wyjątkiem wcięcia) wartość skalarna powinna być interpretowana dosłownie w taki sposób, aby zachować znaki nowej linii. I na odwrót, >
znak wskazuje, że następuje wielowierszowy „zawinięty” skalar, co oznacza, że znaki nowej linii są konwertowane na spacje. Na przykład:
>>> 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+
Częścią jest wskaźnik wcięcie (wyraźne określenie w jaki sposób należy stosować wiele przestrzenie wcięcia) z „chomping wskaźnika” +
, który określa, jak ekstra białe znaki na końcu skalarnego dosłownym powinny być obsługiwane.
Błąd, który otrzymujesz, jest trudny: dzieje się tak, ponieważ wcięcie powinno być względne do bieżącego elementu na poziomie bloku. Więc w tym przypadku powinno być 4+
zamiast, 6+
ponieważ ostatnim elementem na poziomie bloku jest element tablicy (określony przez -
), a literał jest od niego wcięty o 4. Nieco zaskakujące jest to, że final: |
odwzorowanie nie jest uważane za element blokowy, mimo że jego wartość jest wieloliniowa. To ma sens, jeśli się nad tym zastanowić - nadal jest to tylko „jednowierszowe” mapowanie „klucz: wartość”. Wartość po prostu używa specjalnej składni dla wieloliniowych wartości skalarnych. Mylące, ale w pewnym sensie spójne ...