4

What the equivalent way to str.format function for converting booleans into strings?

>>> "%5s" % True
' True'

>>> "%5s" % False
'False'

Please note the space in ' True'. This always makes the length the same for 'True' and 'False'.

I've check the methods in this post:

How are booleans formatted in Strings in Python?

None of them can do the same thing.

0

4 Answers 4

5

You can use type conversion flags to do what you wanted:

'{:_>5}'.format(True)   # Oh no! it's '____1'
'{!s:_>5}'.format(True) # Now we get  '_True'

Note the !s. I used an underscore to show the padding more clearly. It also works with f-strings:

f'{True:_>5}'   # '____1'
f'{True!s:_>5}' # '_True'

Relevant documentation:

6.1.3. Format String Syntax

[...]

The conversion field causes a type coercion before formatting. Normally, the job of formatting a value is done by the __format__() method of the value itself. However, in some cases it is desirable to force a type to be formatted as a string, overriding its own definition of formatting. By converting the value to a string before calling __format__(), the normal formatting logic is bypassed.

Three conversion flags are currently supported: '!s' which calls str() on the value, '!r' which calls repr() and '!a' which calls ascii().

Some examples:

"Harold's a clever {0!s}"        # Calls str() on the argument first
"Bring out the holy {name!r}"    # Calls repr() on the argument first
"More {!a}"                      # Calls ascii() on the argument first
Sign up to request clarification or add additional context in comments.

Comments

1

You can use the str() function. More about it here.

Here are some examples:

x = str(True)
y = False

print( type(x) )
<class 'str'>   # This is a string

print( type(y) )
<class 'bool'>  # This is a boolean

Comments

1

I found that "{:>5}".format(str(True)) works fine. The output is exactly the same as "%5s" % True, ie ' True'.

So the length of "{:>5}".format(str(bool_value)) is alway 5, no matter bool_value is True or False.

Of course you may change the length or the alignment direction as you want. eg. "{:6}".format(str(True)) outputs 'True '.

Comments

0

Not sure if I got idea correctly but if some variable x results in True or False, You can write str(x); if not a case, sorry just try explaining Q in more detailed way

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.