'how to get around "Single '}' encountered in format string" when using .format and formatting in printing
I am currently trying to print a tabulated format (using left alignment and padding) for headings in a table however I keep getting the following error.
ValueError: Single '}' encountered in format string
Here's the line:
print("{0}:<15}{1}:<15}{2}:<8}".format("1", "2", "3"))
Required output is something along the lines of:
1 2 3
I've tried duplicating the { } as advised here but received no luck.
I am probably missing something incredibly obvious however after staring at it for ages, I cannot see it. After all, what's the harm in asking?
Thanks
Solution 1:[1]
Works:
>>> print("{0}:<15}}{1}:<15}}{2}:<8}}".format("1", "2", "3"))
1:<15}2:<15}3:<8}
Edit: Now I understand you. Do this:
print("{0:<15}{1:<15}{2:<8}".format("1", "2", "3"))
Solution 2:[2]
Use }}:
>>> "{0}:<15}}{1}:<15}}{2}:<8}}".format("1", "2", "3")
'1:<15}2:<15}3:<8}'
Solution 3:[3]
The { and } characters need to be escaped where they're not part of the formatting template.
Try: print("{0}:<15}}{1}:<15}}{2}:<8}}".format("1", "2", "3"))
Outputs: 1:<15}2:<15}3:<8}
Solution 4:[4]
You can also use Variables to do that. lenmax = the max number of space needed, and op = the var i want to format with (both vars need to be set first)
print(('{:>' + str(lenmax) + '}').format(op), end='\t\t')
Things to remember:
- Parenthesis can be used.
- you can't concat ints so the var on the string must be transformed.
- the end statement gives you Tab so you don't have linejumps
hope works for someone.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Shadow Wizard Says No More War |
| Solution 2 | Fred Foo |
| Solution 3 | WaffleSouffle |
| Solution 4 |
