2010-02-13 3 views
120

나는 내가 할 수없는 참조 : 파이썬에서부울은 파이썬에서 문자열로 어떻게 포맷됩니까?

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

. b (oolean)에 대해 %b을 추측했습니다. 이게 뭔가 있니? 당신이 True False 사용하려는 경우

+1

결과를 원하십니까? 진실과 거짓? 그러면 '% s'을 (를) 원합니다. % b는 존재할 때 2 진수입니다 (base-2와 같이). –

+0

호 예! "% s"은 (는) 정상적으로 작동하는 것 같습니다. 이 질문에 답하고 선택된 답변을 얻으십시오. 나는 "% s"% str (False)를 사용했습니다. 부끄러움 : –

+3

관련 문서로 연결 : http://docs.python.org/library/stdtypes.html#string-formatting-operations – bernie

답변

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

이 부울 값을 특정하지 않습니다 - %r 인수에 __repr__ 메소드를 호출합니다. %s (str)도 작동해야합니다.

+2

'% r'과 (과)'% s'의 주요 차이점은 무엇입니까? – Stallman

+8

나는이 점을 항상 염두에 두었지 만 내가 틀렸다면 나를 바로 잡습니다. % s (와 str())는 가능한 한 인간을 대상으로 객체를 표현하려고합니다. % r (따라서 repr())은 객체를 가능한 한 투명하게 Python을 표현하기위한 것입니다. 예를 들어,'print (str ("foo"))'는 단지'foo'를 새로운 행에 출력합니다. 'print (repr ("foo"))'는 따옴표를 포함하여 새로운 줄에''foo ''를 출력합니다. 파이썬 인터프리터에서 파이썬의 인자에 해당 객체를 얻기 위해 입력해야하기 때문입니다. – bobismijnnaam

50

는 : str(True)

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

때문에를 'True'str(False)'False'입니다. 당신이 1 0 사용하려는 경우

가 나 : int(True)

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

때문에를 1int(False)0입니다.

8

또한 사용할 수 있습니다

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

이 문자열

Formatter class 결과
True False 
True False 
1 0 
1.000000 0.000000 
1.000000e+00 0.000000e+00 

% -format 형식 지정자의 일부

( %r, %i)를 사용할 수 없습니다 있습니다. 자세한 내용은 Format Specification Mini-Language

+3

서식 지정 옵션을 추가하면 [이 작업을 망칠 수 있습니다.] (http://stackoverflow.com/q/36573222/241211) 예 : boolean을''str (...)하지 않으면'{: _^5}'는''__1 __ ''을 얻습니다. – Michael

+2

'! {s : _^5} '와 같은 타입 변환 문제를 [get around (https://stackoverflow.com/a/48326865/241211)] 할 수 있습니다. '진실'이다. – Michael