pythonstringformatstring-formattingcurly-braces

How do I escape curly-brace ({}) characters characters in a string while using .format?


Non-working example:

print(" \{ Hello \} {0} ".format(42))

Desired output:

 {Hello} 42 

Solution

  • You need to double the {{ and }}:

    >>> x = " {{ Hello }} {0} "
    >>> print(x.format(42))
    ' { Hello } 42 '
    

    Here's the relevant part of the Python documentation for format string syntax:

    Format strings contain “replacement fields” surrounded by curly braces {}. Anything that is not contained in braces is considered literal text, which is copied unchanged to the output. If you need to include a brace character in the literal text, it can be escaped by doubling: {{ and }}.