본문 바로가기
인터페이스 개발/Python

Python - 문자열 관리[포맷팅] - 포맷팅, 선형 포맷팅, 자리 채움방식

by cooluk 2020. 7. 25.

Chap.8 문자열 관리[포맷팅] - 포맷팅, 선형 포맷팅, 자리 채움방식

 

포맷팅

포맷팅, 선형 포맷팅, 자리 채움방식

 

포맷팅

  • %d 정수
  • %f 실수
  • %s 문자열
  • %c 문자 하나  
  • %h 16진수   
  • %o 8진수
  • %% % 문자   
  • %[-]폭[.유효자리수]서식, 폭에는 소수점에 포함 , 반올림 발생

price = 500
print("궁금하면 " + str(price) + "원!")

mont = 8
day = 15
anni = "광복절"
print("%d월%d일은 %s이다." % (mont, day, anni))  # python 2 style

결과

궁금하면 500원!
8월15일은 광복절이다.

 

value = 123
print("###%d###"%value)
print("###%5d###"%value)  # 5자리로 출력 (오른쪽에 정렬해서)
print("###%10d###"%value)  # 10자리로 출력 (오른쪽에 정렬해서)
print("###%-10d###"%value)  # 10자리로 출력 (왼쪽에 정렬해서)
print("###%1d###"%value)  # 더 낮은 자리로 출력하면 그대로 나온다.

결과

###123###
###  123###
###       123###
###123       ###
###123###

 

# 깔금하게 표기할 때 좋다.
price = [30, 13500, 2000]
for p in price :
    print("가격 : %d원"%p)
print()
for p in price :
    print("가격 : %7d원"%p)
print()
for p in price :
    print("가격 : %-7d원"%p)

결과

가격 : 30원
가격 : 13500원
가격 : 2000원

가격 :      30원
가격 :   13500원
가격 :    2000원

가격 : 30     원
가격 : 13500  원
가격 : 2000   원

 

f = 123.1234567
print("%10f"%f)  # 앞에 f는 float
print("%10.8f"%f)
print("%10.5f"%f)
print("%10.2f"%f)
print("%.2f"%123.126)  # 가장 많이 쓴다.

결과

123.123457

123.12345670

  123.12346

     123.12

123.13

 

 

선형 포맷팅 - 권장

  • "{[:포맷문자열]} ".format(값...)
  • "{인덱스[:포맷문자열]} ".format(값...)
  • "{변수명[:포맷문자열]} ".format(값...)

name = "한결"
age = 16
height = 162.5
print("이름: {}, 나이: {}, 키: {}".format(name, age, height))
print("이름: {:s}, 나이: {:d}, 키: {:f}".format(name, age, height))
print("이름: {:4s}, 나이: {:3d}, 키: {:.2f}".format(name, age, height))

결과

이름: 한결, 나이: 16, 키: 162.5
이름: 한결, 나이: 16, 키: 162.500000
이름: 한결  , 나이:  16, 키: 162.50

 

name = "한결"
age = 16
height = 162.5
print("이름: {0}, 나이: {1}, 키: {2}".format(name, age, height))
print("이름: {2}, 나이: {1}, 키: {0}".format(height, age, name))
print("이름: {name}, 나이: {age}, 키: {height}".format(age=20, height=160.9, name="길동"))

결과

이름: 한결, 나이: 16, 키: 162.5
이름: 한결, 나이: 16, 키: 162.5
이름: 길동, 나이: 20, 키: 160.9

 

boy = {"name": "길동", "age":20, "height":160.9}
print("이름:{0[name]}, 나이:{0[age]}, 키:{0[height]}".format(boy))

결과

이름:길동, 나이:20, 키:160.9

 

# Python 3.6부터! 이걸 많이 쓴다. 앞으로 이렇게 해보자.

name = "한결"
age = 16
height = 162.5
print(f"이름: {name}, 나이: {age}, 키: {height:.2f}")  # 앞에 f가 핵심

결과

이름: 한결, 나이: 16, 키: 162.50

 

 
 
   

문자열은 불변개체다.
중요 : slicing, split, format

 

예제

개행 주의

trabler = """
강나루 건너서
밀반 길을

구름에 달 가듯이
가는 나그네
"""

def main():
    trabler = """
    강나루 건너서
    밀반 길을

    구름에 달 가듯이
    가는 나그네
    """

    # 지금 위 경우는 한줄 맨 앞에 데이터 3개씩 들어가있는 것이다.
    # 처음과 같기 위해서는

    trabler = """
강나루 건너서
밀반 길을

구름에 달 가듯이
가는 나그네
"""

    # 위와 같이 표현해야한다.

 

 

 

댓글