4. 문자열 출력 포매팅 (String Formatting)
변수에 담겨있는 데이터(숫자, 문자, 날짜 등)를 우리가 원하는 형태의 문장 구조로 예쁘게 끼워 넣어 텍스트로 완성하는 작업을 포매팅(Formatting)이라고 합니다.
파이썬은 과거부터 현재에 이르기까지 크게 3가지 방식의 포매팅 기술을 제공해왔으며, 현재 실무에서는 압도적인 편의성을 자랑하는 f-문자열(f-string) 방식이 표준처럼 사용됩니다.
4.1 포매팅의 3가지 시대적 발전 과정
1) 1세대: % 연산자 방식 (Old Style)
C언어의 printf 구조를 그대로 빌려온 구형 방식입니다. 문자열 내부에 %s(문자열), %d(정수), %f(실수) 등의 기호(포매팅 코드)를 적고, 뒤에 % 연산자를 붙여 순서대로 값을 매칭합니다.
name = "전민수"
age = 30
# 단점: 변수 타입에 맞춰 %s, %d 를 정확히 암기해야 하며 길이가 길어지면 복잡해집니다.
old_format = "이름: %s, 나이: %d" % (name, age)
print(old_format) # 이름: 전민수, 나이: 30
2) 2세대: .format() 메서드 방식
파이썬 3 초기 버전에 추가된 방식으로, 데이터 타입 구분 없이 무조건 중괄호 {}를 구멍으로 뚫어두고 꼬리에 .format() 메서드를 달아 데이터를 끼워 넣습니다. 인덱스 번호나 변수명 매칭이 가능해졌습니다.
# 단점: 여전히 코드가 길고, 변수 이름을 두 번씩 적어야 하는 번거로움이 있습니다.
new_format = "이름: {0}, 나이: {1}".format(name, age)
print(new_format) # 이름: 전민수, 나이: 30
3) 3세대: f-문자열 (f-string) 방식 (파이썬 3.6+)
현재 가장 강력하고 널리 쓰이는 방식입니다. 문자열 따옴표 바로 앞에 알파벳 f 를 붙이면 인터프리터가 중괄호 {} 안의 실제 변수명이나 파이썬 식을 그 자리에서 즉시 평가하여 문자로 치환해버립니다.
# 장점: 직관적이고 코드가 가장 짧으며, 연산 속도마저 빠릅니다!
f_string = f"이름: {name}, 나이: {age}"
print(f_string) # 이름: 전민수, 나이: 30
4.2 숫자와 텍스트의 정교한 정렬 꾸미기
f-문자열이나 .format() 방식 내부에서는 콜론(:) 뒤에 포매팅 기호를 추가하여 좌/우 정렬, 소수점 자릿수 제한, 천 단위 콤마 등을 자유롭게 꾸밀 수 있습니다.
공간 확보와 정렬 기호
<: 좌측 정렬 (기본값)>: 우측 정렬^: 중앙 정렬
title = "파이썬"
# 10칸의 빈 공간을 만들고 중앙(^)에 정렬. 남는 공백은 '_' 로 채움
print(f"[{title:_^10}]") # [___파이썬____]
소수점 제어와 천 단위 콤마
숫자를 다룰 때는 실수의 소수점을 제한하는 .nf (n째 자리까지 반올림) 패션과, 큰 금액을 표시하는 콤마(,) 패션이 유용합니다.
pi_value = 3.14159265
salary = 2500000
# 소수점 둘째 자리(.2f)까지만 출력
print(f"원주율: {pi_value:.2f}") # 원주율: 3.14
# 3자리마다 콤마(,) 찍기
print(f"내 월급: {salary:,} 원") # 내 월급: 2,500,000 원
4.3 날짜와 시간의 다채로운 포매팅
datetime 객체의 데이터도 f-문자열 구멍 안에서 특수 기호를 통해 원하는 형태의 날짜 문자열로 간단히 치환할 수 있습니다.
%Y(4자리 연도),%m(숫자 월),%d(숫자 일)%H(24시간),%M(분),%S(초)
from datetime import datetime
now = datetime.now() # ex: 2026-10-25 14:30:15
# 원하는 포맷대로 자유롭게 배치 (년-월-일 시간:분)
print(f"현재 접속 시간: {now:%Y-%m-%d %H:%M}")
# 현재 접속 시간: 2026-10-25 14:30