[Python] 포맷팅(출력형식지정)- format(), %, f-string
by 우와한개발자
- 포맷팅(formatting) :숫자, 문자, 날짜 데이터에 형식을 지정하는 것
1. 포맷 코드 : %
"문자열 %[옵션][자리수][.소수점자리]타입" % 값
# 여러개 가능
"문자열 %타입 %타입" % (값1, 값2)
1) 옵션
| 옵션 | 의미 | 예시 | 결과 |
| - | 왼쪽 정렬 | "%-10s" % "cat" | cat |
| + | 부호 표시 | "%+d" % 10 | +10 |
| 0 | 0으로 채움 | "%05d" % 3 | 00003 |
| (공백) | 양수 앞 공백 | "% d" % 10 | 10 |
2) 자리수와 소수점자리 형식
| 형식 | 의미 | 예시 | 결과 |
| %10s | 전체 10칸 | "%10s" % "cat" | cat |
| %.2f | 소수 2자리 | "%.2f" % 3.14159 | 3.14 |
| %10.2f | 10칸 + 소수2 | "%10.2f" % 3.1 | 3.10 |
3) 타입/포맷코드
| 타입 | 의미 | 예시 | 결과 |
| d | 정수 | "%d" % 10 | 10 |
| f | 실수 | "%f" % 3.14 | 3.140000 |
| s | 문자열 | "%s" % "hi" | hi |
| c | 문자 | "%c" % 65 | A |
| o | 8진수 | "%o" % 10 | 12 |
| x | 16진수 | "%x" % 255 | ff |
print("%5s" % "ab") # ab (문자열 오른쪽 정렬, 전체 5칸)
print("%-5s" % "ab") # ab (문자열 왼쪽 정렬)
print("%5d" % 12) # 12 (정수 오른쪽 정렬, 전체 5칸)
print("%05d" % 12) # 00012 (빈칸을 0으로 채움)
print("%5.2f" % 3.14159) # 3.14 (전체 5칸, 소수점 2자리)
print("%.2f" % 3.14159) # 3.14 (소수점 2자리)
print("%c" % "A") # A (문자 1개)
print("%s" % "hello") # hello (문자열)
print("%o" % 10) # 12 (8진수)
print("%x" % 255) # ff (16진수 소문자)
print("%X" % 255) # FF (16진수 대문자)
print("할인율: 10%%") # 할인율: 10% (% 문자 출력)
2. format()
'{[인덱스]:[공백대체문자][정렬방법][자리수][타입]}'.format(변수명)
print('{:*<10}'.format('cat')) #cat*******
print('{1:@^5d}'.format('hello python',123)) #@123@
1) 인덱스
- format()에 넣은 값의 순서
2) 공백대체문자
- 자리수 지정시 빈칸을 다른 문자로 채울수 있음
- ⚠️반드시 문자1개여야하고 정렬기호(<,>,^)과 같이 써야함
3) 정렬방법
| 기호 | 의미 |
| < | 왼쪽 정렬 |
| > | 오른쪽 정렬 |
| ^ | 가운데 정렬 |
4) 자리수
- 전체 출력할 최소 자리수
- 자리수 넘으면 그대로 출력되나 모자른 경우 공백이나 공백대체문자로 출력
- .숫자
| 형식 | 출력 | 의미 |
| '{:.3}'.format('abcdefg') | abc | format()내 문자열 값의 앞 3글자 출력 |
| '{:.4}'.format(12.3456) | 12.35 | format()내 숫자형 값을 유효숫자 4자리로 출력(자동 반올림) |
| '{:.2f}'.format(12.3456) | 12.35 | format()내 숫자형 값을 소수점 아래 2자리까지 출력(자동 반올림) |
5) 타입
- 어떤 형태로 보여줄지
| 타입 | 의미 | 비고 |
| d | 정수 | |
| f | 실수 | |
| .2f | 소수점 둘째 자리까지 실수 | 포맷 문자열만으로 정수부분제한 안됨 →출력할 최소 자리수로 인식 (ex{:5.2f}) : 출력할 자리수 최소5) |
| s | 문자열 | |
| x | 16진수 소문자 | |
| o | 8진수 | |
| b | 2진수 |
name = "홍길동"
age = 25
# 1) 순서대로
print("제 이름은 {}이고, 나이는 {}살입니다.".format(name, age))
# 2) 인덱스 지정
print("제 이름은 {0}이고, 나이는 {1}살입니다.".format(name, age))
print("{1}살인 {0}입니다.".format(name, age)) # 순서 바꾸기
# 3) 이름 지정
print("내 이름은 {a}이고, {b}살입니다".format(a=name,b=age))
3. f-string (python 3.6 이상)
name = "홍길동"
age = 25
# f 또는 F를 문자열 앞에 붙이기
print(f"제 이름은 {name}이고, 나이는 {age}살입니다.")
print(F"제 이름은 {name}이고, 나이는 {age}살입니다.") # F도 가능
# 변수뿐 아니라 표현식도 가능!
print(f"내년에는 {age + 1}살이 됩니다.")
print(f"10년 후에는 {age + 10}살입니다.")'언어 > Python' 카테고리의 다른 글
| [Python] 리스트(list)란? 리스트 특징과 주요 함수 (0) | 2026.03.08 |
|---|---|
| [Python] 날짜 포맷팅 - datetime객체, strftime(),strptime(), localtime() (0) | 2026.03.08 |
| [Python] 기본 자료형- 숫자형과 문자열, 논리형 (0) | 2026.03.08 |
| [Python] 변수 - 할당 규칙, 스코프(LEGB), id, del (0) | 2026.03.08 |
| [Python] AI/데이터 분석을 위한 파이썬 라이브러리 (1) | 2026.03.08 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자