Python의 문자열 포맷팅 방법
Python에서는 여러 가지 방법으로 문자열을 형식화(포맷팅)할 수 있습니다.
- % 연산자 사용
- {} 중괄호와 format() 메서드 사용
- 템플릿 문자열(Template String) 사용
이 글에서는 그중에서도 "%" 기호를 사용하는 문자열 포맷팅 방법에 대해 자세히 살펴보겠습니다.
문자열 포맷팅의 두 가지 방식
Python의 문자열 포맷팅은 크게 두 가지 스타일로 나뉩니다.
- 포맷팅 표현식(Expression) : C 언어의 printf 스타일을 기반으로 하며, % 연산자를 사용합니다.
- 포맷팅 메서드 호출 : str.format() 메서드를 활용하는 방식으로, Python 2.6 이상부터 사용할 수 있습니다.
% 형식 지정자의 종류
%를 이용한 포맷팅은 C 언어의 printf에서 유래했으며, 다음과 같은 형식 지정자를 지원합니다.
- 정수(Integer) — %d 또는 %i
- 실수(Float) — %f
- 문자열(String) — %s
- 원시 데이터(repr) — %r
- 16진수(Hexadecimal) — %x
- 8진수(Octal) — %o
기본 사용 예시
>>> name = "Jeff Bezos" >>> "Richest person in the world is %s" % name 'Richest person in the world is Jeff Bezos'
위 예제처럼 % 뒤에 값을 넣으면 문자열 안의 %s가 해당 변수 값으로 치환됩니다.
다양한 형식 지정자 활용 예제
아래는 Python에서 %를 사용해 문자열을 포맷팅하는 간단한 프로그램입니다.
# %s - 문자열
var = '27' # 문자열 형태
string = 'Variable as string = %s' %(var)
print(string)
# %r - 원시 데이터(raw data)
print ('Variable as raw data = %r' %(var))
# %i - 정수
print('Variable as integer = %i' %(int(var)))
# %f - 실수
print('Variable as float = %f' %(float(var)))
# %x - 16진수
print('Variable as hexadecimal = %x'%(int(var)))
# %o - 8진수
print('Variable as octal = %o' %(int(var)))실행 결과
Variable as string = 27 Variable as raw data = '27' Variable as integer = 27 Variable as float = 27.000000 Variable as hexadecimal = 1b Variable as octal = 33
출력 결과 해석
- %s : 값을 문자열로 변환하여 출력합니다.
- %r : repr() 함수처럼 원시 데이터를 그대로 보여주므로 따옴표가 함께 출력됩니다.
- %i / %d : 값을 정수 형태로 출력합니다.
- %f : 기본적으로 소수점 6자리까지 출력됩니다 (예: 27.000000).
- %x : 10진수 27은 16진수로 1b입니다.
- %o : 10진수 27은 8진수로 33입니다.
마무리
% 포맷팅은 비교적 오래된 스타일이지만 여전히 많은 레거시 코드에서 사용되고 있습니다. 최신 Python(3.6 이상)에서는 f-string이나 str.format()을 사용하는 것이 더 권장되지만, % 방식의 동작 원리를 이해해 두면 기존 코드를 읽고 유지보수하는 데 큰 도움이 됩니다.