Je vois que je ne peux pas faire:
"%b %b" % (True, False)
en Python. J'ai deviné %b
pour b (oolean). Y a-t-il quelque chose comme ça?
Je vois que je ne peux pas faire:
"%b %b" % (True, False)
en Python. J'ai deviné %b
pour b (oolean). Y a-t-il quelque chose comme ça?
Réponses:
>>> print "%r, %r" % (True, False)
True, False
Ce n'est pas spécifique aux valeurs booléennes - %r
appelle la __repr__
méthode sur l'argument. %s
(pour str
) devrait également fonctionner.
%r
et %s
?
print(str("foo"))
imprime simplement foo
sur une nouvelle ligne. print(repr("foo"))
cependant imprime 'foo'
sur une nouvelle ligne, y compris les guillemets, puisque c'est ce que vous devez taper dans l'interpréteur python pour obtenir l'objet correspondant à l'argument en python.
Si vous souhaitez True False
utiliser:
"%s %s" % (True, False)
parce que str(True)
c'est 'True'
et str(False)
est 'False'
.
ou si vous souhaitez 1 0
utiliser:
"%i %i" % (True, False)
parce que int(True)
c'est 1
et int(False)
est 0
.
Vous pouvez également utiliser la classe Formatter de 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);
Voici les résultats
True False
True False
1 0
1.000000 0.000000
1.000000e+00 0.000000e+00
Certains des %
spécificateurs de type -format ( %r
, %i
) ne sont pas disponibles. Pour plus de détails, voir le mini-langage de spécification de format
{:_^5}
, vous obtiendrez à '__1__'
moins que vous ne soyez str(...)
les booléens.
!s
: '{!s:_^5}'.format(True)
is'True_'
Pour mettre à jour cela pour Python-3, vous pouvez le faire
"{} {}".format(True, False)
Cependant, si vous voulez réellement formater la chaîne (par exemple, ajouter un espace blanc), vous rencontrez Python convertissant le booléen dans la valeur C sous-jacente (c'est-à-dire un int), par exemple
>>> "{:<8} {}".format(True, False)
'1 False'
Pour contourner cela, vous pouvez lancer True
une chaîne, par exemple
>>> "{:<8} {}".format(str(True), False)
'True False'