Wednesday, May 13, 2026

A quick tip on YAML ">" and "|" symbols

In YAML, the > and | symbols are Block Scalar Indicators used to handle multi-line strings. While Python doesn't have an exact 1:1 match for the specific whitespace stripping logic of YAML, we can approximate them using Triple Quotes (""") and string methods.


1. The Literal Block Scalar (|)

The pipe symbol preserves every newline within the block. It is most similar to a standard Python triple-quoted string where you want the formatting to remain exactly as typed.

YAML

YAML
example: |
  Line one
  Line two
  Line three

Python Equivalent

In Python, this is simply a triple-quoted string. To match YAML's default behavior (which keeps a single trailing newline), we usually don't need extra methods.

Python
# Equivalent
example = """Line one
Line two
Line three
"""

2. The Folded Block Scalar (>)

The "greater than" symbol folds newlines into spaces. It treats a block of text as a single paragraph, replacing single line breaks with a space (while preserving double line breaks as newlines).

YAML

YAML
example: >
  This is a long 
  sentence that 
  becomes one line.

Python Equivalent

Python doesn't have a built-in "folding" quote. To achieve this, you typically use a triple-quoted string combined with .replace() or use Parentheses Joining for cleaner code.

Option A: String Manipulation

Python
# Replacing single newlines with spaces
example = """This is a long
sentence that
becomes one line.""".replace("\n", " ")

Option B: Implicit Concatenation (The "Clean" Way)

This is the idiomatic Python way to write long strings on multiple lines without actually including newline characters in the data.

Python
example = (
    "This is a long "
    "sentence that "
    "becomes one line."
)

Comparison Summary

FeatureYAML SyntaxPython LogicResult
Preserve Newlines`` (Literal)"""string"""
Fold Newlines> (Folded)( "a" "b" )Replaces \n with a space.
Trailing Space`+or-`

A Note on "Chomping"

YAML uses + and - (e.g., |- or >+) to control trailing whitespace (Chomping).

  • YAML |- (Strip): Removes all trailing newlines.

    • Python: """string""".strip()

  • YAML |+ (Keep): Keeps all trailing blank lines.

    • Python: Standard """string""" behavior if you leave those lines inside the quotes.

Pro Tip: If you are actually writing Python code to generate YAML, using a library like PyYAML is safer than manual string formatting, as it handles these markers automatically based on the string's content.

No comments:

Post a Comment

A quick reference to YAML

YAML is designed to be human-readable and maps directly to native data types like lists, dictionaries, and strings. Here is a brief summary ...