How are booleans formatted in Strings in Python?

后端 未结 4 1312
执念已碎
执念已碎 2021-01-30 06:13

I see I can\'t do:

\"%b %b\" % (True, False)

in Python. I guessed %b for b(oolean). Is there something like this?

相关标签:
4条回答
  • 2021-01-30 06:19
    >>> print "%r, %r" % (True, False)
    True, False
    

    This is not specific to boolean values - %r calls the __repr__ method on the argument. %s (for str) should also work.

    0 讨论(0)
  • 2021-01-30 06:20

    If you want True False use:

    "%s %s" % (True, False)
    

    because str(True) is 'True' and str(False) is 'False'.

    or if you want 1 0 use:

    "%i %i" % (True, False)
    

    because int(True) is 1 and int(False) is 0.

    0 讨论(0)
  • 2021-01-30 06:30

    To update this for Python-3 you can do this

    "{} {}".format(True, False)
    

    However if you want to actually format the string (e.g. add white space), you encounter Python casting the boolean into the underlying C value (i.e. an int), e.g.

    >>> "{:<8} {}".format(True, False)
    '1        False'
    

    To get around this you can cast True as a string, e.g.

    >>> "{:<8} {}".format(str(True), False)
    'True     False'
    
    0 讨论(0)
  • 2021-01-30 06:38

    You may also use the Formatter class of string

    print "{0} {1}".format(True, False);
    print "{0:} {1:}".format(True, False);
    print "{0:d} {1:d}".format(True, False);
    print "{0:f} {1:f}".format(True, False);
    print "{0:e} {1:e}".format(True, False);
    

    These are the results

    True False
    True False
    1 0
    1.000000 0.000000
    1.000000e+00 0.000000e+00
    

    Some of the %-format type specifiers (%r, %i) are not available. For details see the Format Specification Mini-Language

    0 讨论(0)
提交回复
热议问题