[python] 문자열 포맷팅

🚀 + 연산자 연결

price = 500
print("이 물건의 가격은 " + str(price) + "원 입니다.")

>>>  물건의 가격은 500 입니다.

🚀 % 표식 사용

문자열에 다음과 같은 표식을 넣고 뒤에 대응하는 변수를 밝히면 표식 자리에 정보 삽입

       표식        설명
%d 정수
%f 실수
%s 문자열
%c         문자 하나        
%h 16진수
%o 8진수
%% %자문자
price = 500
print("이 물건의 가격은 %d원 입니다." % price)

>>>  물건의 가격은 500 입니다.

서식이 두 개 이상인 경우, (값1, 값2) 식으로 실제값을 괄호로 묶어 나열

month = 8
day = 15
anni = "광복절"
print("%d월 %d일은 %s이다." % (month, day, anni))

>>> 8 15일은 광복절이다.

💡 출력 형식 지정

%[-]폭[.유효자리수]서식

👀 Width

서식이 지정하는 폭은 강제 폭이 아닌 최소 폭으로, 자리수보다 작은 폭을 주어도 최소한 숫자의 자리수만큼은 차지

  • 아래의 %1d의 경우, 강제로 1자리로 맞춰 잘리지 않고 3자리 모두 출력
value = 123
print('###%d###' % value)
print('###%5d###' % value)
print('###%10d###' % value)
print('###%1d###' % value)
###123###
###  123###
###       123###
###123###

👀 Align

일정한 폭을 강제로 할당하여 출력시 변수의 값에 상관없이 숫자의 자리수를 가지런히 맞출 수 있어 숫자 파악에 용이

price = [30, 13500, 2000]

for p in price:
    print("가격:%d원"  % p)
for p in price:
    print("가격:%7d원" % p)
가격:30
가격:13500
가격:2000
가격:     30
가격:  13500
가격:   2000

👀 Numalign

  • 서식 기본값은 오른쪽 정렬
  • 폭에 -를 지정하면 왼쪽으로 정렬 (문자열의 경우, 왼쪽 정렬이 보기에 좋음!)
price = [30, 13500, 2000]
for p in price:
    print("가격:%-7d원" % p)
가격:30     
가격:13500  
가격:2000   

👀 Precision

. 기호와 함께 유효 자리수를 밝혀 소수점 이하 얼마까지 표시할 것인지 정밀도 지정 가능

pie = 3.14159265
print("%10f" % pie)   # 별 다른 지정이 없는 겨우, 소수점 6자리까지 반올림하여 표시
print("%10.8f" % pie)
print("%10.5f" % pie)
print("%10.2f" % pie)
  3.141593
3.14159265
   3.14159
      3.14

🚀 {}.format 메서드 사용

  • 신형 포맷팅, 파이썬 2.6 이후부터
name = 'Jack'
age = 16
height = 162.5
print("이름:{}, 나이:{}, 키:{}".format(name, age, height))

>>> 이름:Jack, 나이:16, :162.5

{} 괄호 안에 0부터 시작하는 순서값을 지정하는데, 순서값 생략시 0부터 차례대로 번호를 매기게 됨

  • 번호를 사용하면 순서를 임의대로 바꿀 수 있음
name = 'Jack'
age = 16
height = 162.5
print("이름:{2}, 나이:{0}, 키:{1}".format(age, height, name))

>>> 이름:Jack, 나이:16, :162.5

{} 괄호 안에 변수 이름을 적어 두고 format의 인수열에 변수의 값 나열 가능
이 때, 키워드 인수로 값을 지정하므로 인수의 순서 상관 없음

print("이름:{name}, 나이:{age}, 키:{height}".format(name = 'Woo', age = 20, height = 160.9))

>>> 이름:Woo, 나이:20, :160.9

👀 사전에 저장된 값 출력

  • 사전을 인수로 주고 []괄호 안에 키 입력
  • 사전의 키로부터 값을 검색하여 문자열 중간에 삽입
boy = {"name":"Han", "age":15, "height":158.7}
print("이름:{0[name]}, 나이:{0[age]}, 키:{0[height]}".format(boy))

>>> 이름:Han, 나이:15, :158.7

👀 인수 타입 지정

  • {} 괄호 안의 : 다음에 인수의 타입 지정
  • 문자열은 s, 정수는 d, 실수는 f의 타입 사용
name = "Han"
age = 15
height = 158.7
print("이름:{0:s}, 나이:{1:d}, 키:{2:f}".format(name, age, height))

>>> 이름:Han, 나이:15, :158.700000

💡 출력 형식 지정

👀 Width, Precision

:과 타입 문자 사이에 폭/ 정밀도 지정

name = "Han"
age = 15
height = 158.7
print("이름:{0:10s}, 나이:{1:5d}, 키:{2:8.2f}".format(name, age, height))

>>> 이름:Han       , 나이:   15, :  158.70

👀 Align

  • 기본값은 문자열 왼쪽 정렬, 수치값 오른쪽 정렬
  • 정렬 지정할 때는 < 왼쪽, > 오른쪽, ^ 중앙 정렬 기호를 폭 앞에 붙임
name = "Han"
age = 15
height = 158.7
print("이름:{0:^10s}, 나이:{1:>5d}, 키:{2:<8.2f}".format(name, age, height))

>>> 이름:   Han    , 나이:   15, :158.70  

정렬 문자 이전에 채움 문자 지정시, 공백 대신 채움 문자 출력 가능

name = "Han"
age = 15
height = 158.7
print("이름:{0:$^10s}, 나이:{1:0>5d}, 키:{2:!<8.2f}".format(name, age, height))

>>> 이름:$$$Han$$$$, 나이:00015, :158.70!!

Categories:

Updated:

Leave a comment