Boolean'lar Python'daki Dizelerde nasıl biçimlendirilir?


170

Göremiyorum yapamam:

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

Python'da. %bB (oolean) için tahmin ettim . Böyle bir şey var mı?


1
Sonucun ne olmasını istiyorsunuz? Doğru ve yanlış? O zaman '% s' istiyorsun. % b, varsa, ikiliktir (taban-2'de olduğu gibi).
Thomas Wouters

1
Ho evet! "% s" gayet iyi çalışıyor. Bu soruyu cevaplayın ve verilen cevabı alın. Eskiden "% s"% str (False) yapardım. Shame on me :)
Juanjo Conti

3
ilgili belgelere bağlantı: docs.python.org/library/…
mechanical_meat

Yanıtlar:


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

Bu, boole değerlerine özgü değildir - bağımsız değişkendeki yöntemi %rçağırır __repr__. %s(için str) de çalışmalı.


2
Arasındaki başlıca fark nedir %rve %s?
Alston

22
Her zaman bu rahatsızlığı aklımdaydım, ama yanılıyorsam düzelt % s (ve böylece str ()), nesneyi insanlar için olabildiğince şeffaf bir şekilde temsil etmeyi amaçlamaktadır. % r (ve böylece repr ()), nesneyi python için olabildiğince şeffaf bir şekilde temsil etmeyi amaçlamaktadır. Örneğin, print(str("foo"))yalnızca fooyeni bir satıra yazdırır . print(repr("foo"))ancak 'foo'tırnaklar da dahil olmak üzere yeni bir satıra yazdırır , çünkü karşılık gelen nesneyi python'daki bağımsız değişkene almak için python yorumlayıcısına yazmanız gerekir.
bobismijnnaam

66

Kullanmak istiyorsanız True False:

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

çünkü str(True)öyle 'True've str(False)öyle 'False'.

veya 1 0kullanmak istiyorsanız :

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

çünkü int(True)öyle 1ve int(False)öyle 0.


18

Ayrıca kullanabilir Biçimlendirici sınıf dizesi

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

Bunlar sonuçlar

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

Bazı %biçimli belirteci ( %r, %i) kullanılamaz. Ayrıntılar için bkz. Biçim Belirtimi Mini Dili


4
Biçimlendirme seçenekleri eklemenin bunu mahvedebileceğini unutmayın . Örneğin {:_^5}alırsınız '__1__'sürece str(...)mantıksal ifadenin.
Michael - Clay Shirky Nerede

2
Sen olabilir etrafında almak gibi tip dönüşümleri ile ilgili sorunlar !s: '{!s:_^5}'.format(True)bir'True_'
Michael - Clay Shirky nerede

5

Python-3 için bunu güncellemek için bunu yapabilirsiniz

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

Bununla birlikte, dizeyi gerçekten biçimlendirmek istiyorsanız (örn. Beyaz boşluk ekleyin), Boytean'ı temel C değerine (yani bir int) örterek Python ile karşılaşırsınız;

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

Bu sorunu Trueçözmek için dize olarak yayınlayabilirsiniz, ör.

>>> "{:<8} {}".format(str(True), False)
'True     False'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.