부울은 파이썬에서 문자열로 어떻게 형식화됩니까?


170

나는 할 수없는 것을 본다 :

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

파이썬에서. 나는 %bb (oolean)로 추측 했다. 이와 같은 것이 있습니까?


1
결과가 무엇을 원하십니까? 진실과 거짓? 그런 다음 '% s'을 (를) 원합니다. % b는 존재하는 경우 2 진을위한 것입니다.
Thomas Wouters

1
네! "% s"은 잘 작동하는 것 같습니다. 이 질문에 답하고 선출 된 답변을 얻으십시오. "% s"% str (False)을 사용했습니다. Shame on me :)
Juanjo Conti

3
관련 문서 링크 : docs.python.org/library/…
mechanical_meat

답변:


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

부울 값에만 한정되는 것은 아닙니다 . 인수 %r에서 __repr__메소드를 호출합니다 . %s(for str)도 작동해야합니다.


2
사이의 큰 차이 무엇 %r%s?
Alston

22
나는 항상이 생각을 염두에두고 있었지만 내가 틀렸다면 나를 바로 잡으십시오. % s (따라서 str ())은 객체를 가능한 한 투명하게 인간에게 표현하는 것을 목표로합니다. % r (및 repr ())은 파이썬에 대해 가능한 한 투명하게 객체를 나타내는 것을 목표로합니다. 예를 들어, print(str("foo"))단순히 foo새 줄에 인쇄합니다 . print(repr("foo"))그러나 'foo'따옴표를 포함하여 새 줄에 인쇄 합니다. 파이썬 인터프리터에 입력하여 해당 객체를 파이썬의 인수에 가져와야하기 때문입니다.
bobismijnnaam

66

True False사용 하려는 경우 :

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

때문에이 str(True)있다 'True'하고 str(False)있다 'False'.

또는 1 0사용 하려는 경우 :

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

때문에이 int(True)있다 1하고 int(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

일부 %형식 형식 지정자 ( %r, %i)를 사용할 수 없습니다. 자세한 내용은 형식 사양 미니 언어 를 참조하십시오.


4
서식 옵션을 추가하면 문제가 발생할 수 있습니다. 부울 {:_^5}'__1__'아닌 한 예를 들어 당신을 얻을 것 str(...)입니다.
Michael-Clay Shirky의 위치

2
당신이 할 수있는 주위 얻을 같은 형식 변환의 문제점을 !s: '{!s:_^5}'.format(True)입니다'True_'
마이클 - 클레이 셔키 어디

4

Python-3에 대해 이것을 업데이트하려면 다음을 수행하십시오.

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

그러나 실제로 문자열의 형식을 지정하려면 (예 : 공백 추가) 파이썬이 부울을 기본 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.