ブール値はPythonの文字列でどのようにフォーマットされますか?


170

私はできないと思います:

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

Pythonで。私%bはb(oolean)を推測しました。このようなものはありますか?


1
結果をどうしたいですか?真と偽?次に、「%s」が必要です。%b(存在する場合)はバイナリ用です(base-2と同様)。
Thomas Wouters、2010

1
ほんとに!「%s」は問題なく動作するようです。この質問に返信して、選択された回答を取得してください。以前は「%s」%str(False)を実行していました。私の恥:)
Juanjo Conti

3
:関連文書へのリンク docs.python.org/library/...
mechanical_meat

回答:


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

これはブール値に固有ではありません- 引数のメソッドを%r呼び出し__repr__ます。 %sstr)も機能するはずです。


2
大きな違いは何だ%rとは%s
Alston、2013

22
私はいつもこの差別を念頭に置いていましたが、間違っていた場合は修正してください。%s(したがってstr())は、オブジェクトを人間に対して可能な限り透過的に表現することを目的としています。%r(したがってrepr())は、オブジェクトをPythonで可能な限り透過的に表現することを目的としています。たとえば、print(str("foo"))単にfoo新しい行に印刷します。print(repr("foo"))ただし'foo'、対応するオブジェクトをpythonの引数に取得するためにpythonインタープリターに入力する必要があるので、引用符を含む新しい行に出力されます。
bobismijnnaam

66

True False使用したい場合:

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

str(True)あり'True'str(False)です'False'

または1 0使用したい場合:

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

int(True)あり1int(False)です0


18

文字列のFormatterクラスを使用することもできます

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

これらは結果です

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

一部の%-formatタイプ指定子(%r%i)は使用できません。詳細については、フォーマット仕様のミニ言語を参照してください


4
フォーマットオプションを追加すると、これが台無しになる可能性があることに注意してくださいたとえば、ブール値でない限り、あなた{:_^5}を取得します。'__1__'str(...)
マイケル-クレイシャーキーはどこにあるか2017

2
次のような型変換の問題を回避できます!s'{!s:_^5}'.format(True)is'True_'
Michael-Where's Clay Shirky

4

これをPython-3用に更新するには、これを行うことができます

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

ただし、文字列を実際にフォーマットする場合(たとえば、空白を追加する場合)は、Pythonがブール値を基礎となるC値(つまり、int)にキャストすることに遭遇します。

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

これを回避するにはTrue、文字列としてキャストできます。たとえば、

>>> "{:<8} {}".format(str(True), False)
'True     False'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.