상세 컨텐츠

본문 제목

[Python] 문자열 구조화 4종 : 문자열 포맷스트링

개발 이야기/Python

by 리치윈드 - windFlex 2022. 5. 8. 19:48

본문

반응형

[관련 글]

2022.05.24 - [개발 이야기/Python] - [코딩 테스트] 파이썬 코딩테스트 핵심 요약 (CheatSheet) - 코테 1시간전에 꼭 보자.

2022.04.30 - [개발 이야기] - [코테] 코딩 테스트 플랫폼 4종 - 백준, 리트코드, 프로그래머스, 코드시그널

2021.12.16 - [개발 이야기/Python] - 파이썬 오디오 라이브러리 Top 5종 (Python Audio Library )

2020.12.16 - [분류 전체보기] - [개발] 피보나치(Fibonacci) 수열 구현 7가지 방법 - 파이썬 실습/확인 바로하기

2020.05.09 - [개발 이야기] - [개발] 파이썬 문법 5분만에 읽히기 - 파이썬 기본 문법 요약/정리 8 가지

2018.03.03 - [개발 이야기/Python] - 피보나치(Fibonacci) 수열을 구현하는 7가지 방법 - 파이썬(Python) 피보나치 구현 7선

 

 

여러분
Python에서 원하는 내용을 문자열로 표현할 때 어떤 방법을 사용하시나요?

 

파이썬 문자열 구조화 포맷스트링 : 문자열 연결, %사용, format(), fstring

테스트 메세지를 작성하거나, 원하는 정보를 담아서 문자열로 출력하는 경우가 빈번하게 발생하지요. C/C++에서 `sprintf` 등에 해당하는 기능이 되겠네요. JAVA/Javascript가 익숙하신 경우라면, 단순히 문자열에 연결해 주거나 `tostring()`등에 익숙할 것입니다. 

 

Python은 다양한 방식으로 문자열 구성을 지원합니다. 대표적으로 아래 4종을 소개 합니다. 

  • 문자열 연결
  • % 사용
  • format() 메소드
  • 포맷스트링 (fstring) 사용 방법

 

 

 

문자열 연결 표현

출력하고자 하는 정보를 문자열로 변경하여 문자열을 연결 ( "+" ) 하는 방식입니다. JAVA 또는 javascript에서 많이 사용하는 방식 입니다. python의 문자열로 변경하는 방법은 `str()`을 사용하여 캐스팅 하는 방법이 있습니다. 

a, b = 10/3 , 10.77
msg = " python string : " + str(a) + ", " + str(b)
print(msg)
# python string : 3.3333333333333335, 10.77
귀찮은 경우에 빠르게 확인해 보는 용도로는 편하긴 합니다. 다만, 출력해야하는 형식을 지정하기 어렵고, 개수가 늘어나면 불편해 집니다. 특히 사이에 쉼표(,) 등으로 구분할 필요가 있다면 필요 이상으로 코드가 지저분 해집니다. 

 

 

퍼센트(%) 사용

Python을 처음 배우는 입문서에서 자주 제시하는 방법입니다. C언어 스타일의 포맷스트링을 최대한 유지하려고 하는 스타일 입니다. 

우선 문자열 내부에 %s, %d, %f 등의 형식지정문자를 포함하여 포맷팅 한 후 매개변수를 입력하는 구분자로 "%"를 사용하는 방식입니다. 문자화 할 때 %02d 등으로 자릿수 표현 등 포맷을 지정이 가능합니다. 

a, b = 10/3 , 10.77
msg = " python string : %02d, %10.5f " % (a,b)
print(msg)
# python string : 03,   10.77000
% 뒤에 변수값 입력은 Tuple 형식이므로 괄호로 감싸주어 입력해야 합니다. 개인적으로는 자리수 맞추는 등에서 번거롭기 때문에 선호하는 방식은 아닙니다. 

 

 

format() 메소드 사용

% 방식을 메소드화 한 것이라고 볼 수 있습니다. 메소드화 하면서 여러가지 편의기능이 추가 되었습니다. 대표적으로 순서를 명시화 할 수 있습니다. 또한 자릿수 등 포맷이 좀 더 직관적입니다. 

a, b = 10/3 , 10.77
msg = " python string : {}, {} ".format(a,b)
print(msg)
# python string : 3.3333333333333335, 10.77

다음은 순서를 변경하고, 자릿수 등의 포맷을 변경한 결과입니다. ex)  {순서 인덱스 : 정수자릿수.소숫점자릿수f}

a, b = 10/3 , 10.77
msg = " python string : {1:5.1f}, {0:0.5f} ".format(a,b)
print(msg)
#  python string :  10.8, 3.33333

 

 

포맷 스트링 (fstring)

위에서 소개한 format() 메소드와 사용은 유사하나, 매개변수를 바로 입력하는 방식입니다. 문자열 앞에 'f'만 추가하여 사용할 수 있기 때문에 형식도 매우 간결합니다. 

개인적으로 가장 빈번하게 사용하는 방식입니다. 출력될 위치에 바로 변수를 입력하기 때문에 직관적입니다. 
a, b = 10/3 , 10.77
msg = f" python string : {a}, {b} "
print(msg)
# python string : 3.3333333333333335, 10.77

자릿수 등의 표현은 format() 메소드와 동일합니다. 

a, b = 10/3 , 10.77
msg = f" python string : {a:2.3f}, {b:10.5f} "
print(msg)
#  python string : 3.333,   10.77000

 

 

[관련 글]

2022.05.24 - [개발 이야기/Python] - [코딩 테스트] 파이썬 코딩테스트 핵심 요약 (CheatSheet) - 코테 1시간전에 꼭 보자.

2022.04.30 - [개발 이야기] - [코테] 코딩 테스트 플랫폼 4종 - 백준, 리트코드, 프로그래머스, 코드시그널

2021.12.16 - [개발 이야기/Python] - 파이썬 오디오 라이브러리 Top 5종 (Python Audio Library )

2020.12.16 - [분류 전체보기] - [개발] 피보나치(Fibonacci) 수열 구현 7가지 방법 - 파이썬 실습/확인 바로하기

2020.05.09 - [개발 이야기] - [개발] 파이썬 문법 5분만에 읽히기 - 파이썬 기본 문법 요약/정리 8 가지

2018.03.03 - [개발 이야기/Python] - 피보나치(Fibonacci) 수열을 구현하는 7가지 방법 - 파이썬(Python) 피보나치 구현 7선

반응형

관련글 더보기

댓글 영역