새소식

프로그래밍/Python

문자열 포맷팅

  • -

python3에서 문자열 포맷팅을 하는 방법은 총 3가지가 있다.

이번 글에서는 3가지 방법에 대해 전부 알아볼 예정이다.

 

 

1. %-formatting

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

def main():
    a = 5
    s = '2020년 7월 8일'

    print('a의 값은 : %d' % a)
    print('오늘은 %s입니다' % s)
    
if __name__ == '__main__':
    main()

실행결과

이 방식은 C언어를 사용해봤다면 익숙한 방식일 것이다. 파이썬이 아닌 다른 언어에서도 사용하는 방식이지만 타입을 정확하게 알고 작성해야 하는 단점이 있다.

 

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

def main():
    name = 'mer1'
    age = 24
    like = 'soccer'    

    print('Hi! My name is %s and I am %d years old\nI like watching %s.' % (name,age,like))
    
if __name__ == '__main__':
    main()

%-formatting 방식을 추천하지 않는 이유는 위 처럼 타입을 정확하게 알고 사용해야 한다는 단점도 있지만 포맷팅 할 문자열이 길어지면 가독성이 떨어지기 때문이다.

 


2. str.format

파이썬에는 str.format이라는 새로운 포맷팅 방식이 있다.

 

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

def main():
    a = 'Hi'
    print('{} mer1~'.format(a))
    
if __name__ == '__main__':
    main()

실행결과

사용방식은 print문 안에 {}를 넣고 .format(n)의 n부분에 입력하고 싶은 값을 넣으면 된다.

 

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

def main():
    a = 'name {name}. age: {age}'
    print(a.format(name='mer1', age='24'))
    
if __name__ == '__main__':
    main()

실행결과

 

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

def main():
    a = 'name {0}. age: {1}'
    print(a.format('mer1','24'))
    
if __name__ == '__main__':
    main()

실행결과

format 메소드는 위와 같이 다양한 형태로 지원이 된다. 그러나 str.format() 방식도 %-formatting과 같이 길이가 긴 문자열일수록 가독성이 떨어지기 때문에 파이썬 3.6 버전 이상에서는 새로운 포맷팅 방식을 지원한다.

 

 


3. f-string

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

def main():
    name = 'mer1'
    a = f'Hi~ {name}'
    print(a)
    
if __name__ == '__main__':
    main()

실행결과

방식은 'f'라는 접두사를 통해 사용할 수 있으며 str.format과 %-formatting 방식에 비해 훨씬 간결하고 사용하기가 쉬운 방식이다. 또한 str.format과 달리 정수끼리의 산술 연산도 지원한다.  

 

대문자 'F'로도 사용이 가능하나 소문자 'f'를 사용하는게 PEP의 기본 가이드이다.
#!/usr/bin/env python3
#-*- coding: utf-8 -*-

import datetime

def main():
    date = datetime.datetime.now()
    print(f'{date:%Y-%m-%d} is on a {date:%A}')
    
if __name__ == '__main__':
    main()

실행결과

f-string 방식은 날짜 변수를 사용할 때 매우 유용하다.

 

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

import datetime

def main():
    date = datetime.datetime.now()
    print('{} is on a {}'.format(date.strftime("%Y-%m-%d"), date.strftime("%A")) )
    
if __name__ == '__main__':
    main()

str.format 방식과 비교해보면 f-string 방식이 얼마나 손쉽게 사용 가능한지 알 수 있다.

 

정리하자면 python3에서 문자열 포맷팅 방식을 고민하고 있다면 f-string 방식을 사용하는 것이 좋다.

 

 

 

 

 

'프로그래밍 > Python' 카테고리의 다른 글

파이썬 코딩 스타일  (0) 2020.07.16
모듈 설치 하는 방법  (0) 2020.07.16
자료형  (0) 2020.07.07
기본 문법  (0) 2020.07.04
while문 안에서 print(~,end=' ')을 주었을 때 출력되지 않는 오류  (0) 2020.04.02
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.