True/False formats as 1/0 in a fixed width string

Dave Angel davea at davea.name
Wed Mar 27 09:55:35 CET 2013


On 03/27/2013 04:40 AM, Frank Millman wrote:
> Hi all
>
> This is a bit of trivia, really, as I don't need a solution.
>
> But someone might need it one day, so it is worth mentioning.
>
>  >>> '{}'.format(True)
> 'True'
>  >>> '{:<10}'.format(True)
> '1         '
>
> One might want to format True/False in a fixed width string, but it
> returns 1/0 instead. Is there any way to make this work?
>
> Frank Millman
>

Easiest way is to surround the boolean variable with repr()

flag = True
'{:<10}'.format(repr(flag))

An alternative is to just use something like:

["False     ","True      "][flag]

making sure the two strings are of the same length.

(You didn't specify version, but I tested these with CPython 2.7.3)

-- 
DaveA



More information about the Python-list mailing list