본문 바로가기
SW 프로그래밍/파이썬

파이썬에서 sprintf 같은 것을 사용하기

by N2info 2020. 3. 15.
>>> yes_votes = 42572654
>>> no_votes = 43132495
>>> percentage = yes_votes / (yes_votes + no_votes)
>>> '{:-9} YES votes  {:2.2%}'.format(yes_votes, percentage)
' 42572654 YES votes  49.67%'

>>> '{:-19} YES votes  {:2.2%}'.format(yes_votes, percentage)
'           42572654 YES votes  49.67%'

>>> '{19:} YES votes  {:2.2%}'.format(yes_votes, percentage)
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    '{19:} YES votes  {:2.2%}'.format(yes_votes, percentage)
IndexError: tuple index out of range

>>> '{:19} YES votes  {:2.2%}'.format(yes_votes, percentage)
'           42572654 YES votes  49.67%'

>>> '{:019} YES votes  {:2.2%}'.format(yes_votes, percentage)
'0000000000042572654 YES votes  49.67%'
>>> 

참고 : 숫자(intfloatcomplexdecimal.Decimal와 서브 클래스)를 n 형식으로 포매팅할 때 (예: '{:n}'.format(1234)), 이 함수는 일시적으로 LC_CTYPE 로케일을 LC_NUMERIC 로케일로 설정하여 localeconv() 의 decimal_point 와 thousands_sep 필드를 디코드하는데, 이 필드들이 ASCII가 아니거나 1바이트보다 길고, LC_NUMERIC 로케일이 LC_CTYPE 로케일과 다를 때만 그렇게 합니다. 이 임시 변경은 다른 스레드에 영향을 줍니다.

https://docs.python.org/ko/3/library/stdtypes.html#str.format