2010-02-13 13 views
120

Vedo che non posso fare:Come sono formattati i booleani in String in Python?

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

in Python. Ho indovinato %b per b (ooleano). C'è qualcosa di simile?

+1

Cosa vuoi che il risultato sia? Vero e falso? Allora vuoi "% s". % b, quando esiste, è per binario (come in base-2). –

+0

Ho sì! "% s" sembra funzionare bene. Rispondi a questa domanda e ottenere una risposta innescata. Ho usato "% s"% str (False). Vergogna su di me :) –

+3

collegamento alla documentazione pertinente: http://docs.python.org/library/stdtypes.html#string-formatting-operations – bernie

risposta

177
>>> print "%r, %r" % (True, False) 
True, False 

Questo non è specifico per i valori booleani - %r chiama il metodo __repr__ sull'argomento. %s (per str) dovrebbe funzionare anche.

+2

Qual è la principale differenza tra '% r' e'% s'? – Stallman

+8

Ho sempre pensato a questa distorsione, ma correggimi se sbaglio. % s (e quindi str()) mirano a rappresentare l'oggetto nel modo più trasparente possibile per gli umani. % r (e quindi repr()) mirano a rappresentare l'oggetto nel modo più trasparente possibile per python. Ad esempio, 'print (str (" foo "))' stampa semplicemente 'pippo' su una nuova riga. 'print (repr (" foo "))' stampa comunque ''foo'' su una nuova riga, comprese le virgolette, poiché è ciò che è necessario digitare nell'interprete python per ottenere l'oggetto corrispondente all'argomento in python. – bobismijnnaam

50

Se volete True False uso:

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

perché str(True) è 'True' e str(False) è 'False'.

o se si desidera 1 0 uso:

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

perché int(True) è 1 e int(False) è 0.

8

È inoltre possibile utilizzare il Formatter class di corda

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); 

Questi sono i risultati

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

Alcuni dei progettisti di tipo % -format (%r, %i) non sono disponibili. Per dettagli vedi Format Specification Mini-Language

+3

Si noti che l'aggiunta di opzioni di formattazione [può rovinare tutto.] (Http://stackoverflow.com/q/36573222/241211) E.g. '{: _^5}' ti prenderà '' __1 __ ''a meno che tu non str (...)' i booleani. – Michael

+2

È possibile [aggirare] (https://stackoverflow.com/a/48326865/241211) i problemi con le conversioni di tipo come '! S':' '{! S: _^5}'. Format (True) ' è ''True_'' – Michael

Problemi correlati