Python format() 문자열 마스터하기: 명확한 예제로 완전 정복
Python 문자열 format()이란?
Python 문자열 format()은 플레이스홀더가 있는 문자열을 유효한 값으로 치환/변환해 최종 문자열 만드는 함수. Python 문자열 클래스 내장 함수로 포맷된 문자열 반환. 플레이스홀더는 중괄호로 정의.
예: “Welcome to Guru99 {}”.format(‘value here’).
이 튜토리얼에서 배울 내용:
- Python 문자열 format()이란?
- Python format() 함수 문법
- 문자열 format() 작동 원리
- 예제: 빈 플레이스홀더를 문자열 값으로 치환
- 예제: 빈 플레이스홀더를 숫자 값으로 치환
- 예제: 플레이스홀더 내 변수나 키워드 인수 사용
- 예제: 플레이스홀더 내 인덱스/위치 인수 사용
- 플레이스홀더 내부 포매팅
- 클래스와 format() 사용
- 딕셔너리와 format() 사용
- 변수 치환 패딩
Python format() 함수 문법
templatestring.format(val1, val2...)
매개변수
val1, val2 … : 중괄호 {} 형태 플레이스홀더 가진 템플릿 문자열에서 치환할 값들. 플레이스홀더는 문자열, 키/값 쌍, 정수, 부동소수, 문자 등 가능.
반환값:
중괄호 플레이스홀더 자리에 유효한 값 치환된 최종 문자열 반환.
플레이스홀더
템플릿 문자열 플레이스홀더는 중괄호로 표현, 예: {}. 빈 {}일 수도, 변수 예: {name}, 숫자 인덱스 예: {0}, {1} 등 가능.
문자열 format() 작동 원리
Python 문자열 format() 메서드는 원본 문자열에서 플레이스홀더 스캔. 플레이스홀더는 빈 중괄호({}), 위치 인수(인덱스 0, 1 예: {0}, {1}), 키워드 인수(변수명 중괄호 내 예: {name}, {age}) 가능. 빈 중괄호 경우 format 값들이 순서대로 치환. 첫 값 첫 빈 중괄호, 다음 값 다음 중괄호. 위치 인수는 인덱스 0부터 시작. format 내 값들 쉼표로 구분, 0번째 값이 format 내 첫 값 가리킴. 키워드 인수 경우(플레이스홀더 내 변수 사용), format 내 값 순서 상관없음. 변수명 기준으로 값 치환.
예제: 빈 플레이스홀더를 문자열 값으로 치환
아래 예제에서 문자열에 빈 중괄호({}). format에 주어진 값이 중괄호 안에 치환.
치환하려는 값은 문자열.
예제:
Python 문자열 포매팅으로 중괄호({})를 문자열 값으로 치환. 값은 format("Guru99")로 전달. 실행 시 중괄호 {}가 Guru99로 치환돼 최종 문자열 "Welcome to Guru99 tutorials" 얻음.
print ("Welcome to {} tutorials".format("Guru99"))
출력:
Welcome to Guru99 tutorials
예제: 빈 플레이스홀더를 숫자 값으로 치환
아래 예제에서 숫자 값을 원본 문자열에 치환. 숫자 필요한 위치에 중괄호({}) 추가. 실행 시 빈 중괄호({})가 숫자 값으로 치환.
예제:
format()으로 문자열 내 숫자 삽입도 가능. 예제는 format() 내 숫자 99로 빈 플레이스홀더 {} 치환하는 방법 보여줌.
print ("Welcome to Guru{} Tutorials".format("99"))
출력:
Welcome to Guru99 Tutorials
예제: 플레이스홀더 내 변수나 키워드 인수 사용
아래 예제처럼 중괄호 내 변수 사용 가능. 변수들 format() 내 정의. 실행 시 변수에 할당된 값이 원본 문자열에 치환.
예제:
중괄호 내 변수 사용 예: {name} {num}. name과 num 변수 값은 format 내 예: format(name="Guru", num="99"). name과 num 값이 {name}과 {num}에 치환.
print ("Welcome to {name}{num} Tutorials".format(name="Guru", num="99"))
출력:
Welcome to Guru99 Tutorials
예제: 플레이스홀더 내 인덱스/위치 인수 사용
값들은 0, 1, 2 같은 인덱스로 플레이스홀더 내 치환 가능. 값은 format()에서 순서대로 선택.
예제:
print ("Welcome to {0}{1} Tutorials".format("Guru","99"))
출력:
Welcome to Guru99 Tutorials
예제: 문자열 내 다중 플레이스홀더 사용
이 예제에선 다중 빈 플레이스홀더 사용.
예제:
예제 문자열에 다중 빈 플레이스홀더, 각 플레이스홀더는 format() 내 값 참조. 첫 값 첫 플레이스홀더 치환, 이후 순차적.
print ("{} is {} new kind of {} experience!".format("Guru99", "totally","learning"))
출력:
Guru99 is totally new kind of learning experience!
플레이스홀더 내부 포매팅
플레이스홀더가 빈 것, 변수, 인덱스 가능함 보셨음. 플레이스홀더 내부에서 Python 문자열 포매팅 적용도 가능.
포맷 목록:
| 포맷 | 설명 | 예제 |
:d | 플레이스홀더 내부 사용 시 10진수 출력 | print("The binary to decimal value is : {:d}".format(0b0011))출력: The binary to decimal value is : 3 |
:b | 이진수 출력 | print("The binary value is : {:b}".format(500))출력: The binary value is : 111110100 |
:e | 과학적 표기법 출력 (소문자 e) | print("The scientific value is : {:e}".format(40))출력: The scientific format value is : 4.000000e+01 |
:E | 과학적 표기법 출력 (대문자 E) | print("The scientific value is : {:E}".format(40))출력: The scientific value is : 4.000000E+01 |
:f | 고정소수점 출력. 기본 6자리 소수. 2자리 필요 시 .2f 사용 | print("The value is : {:f}".format(40))출력: The value is : 40.000000 예: 소수 2자리까지. print("The value is : {:.2f}".format(40))
출력: The value is: 40.00 |
:o | 8진수 출력 | print("The value is : {:o}".format(500))출력: The value is : 764 |
:x | 16진수 소문자 출력 | print("The value is : {:x}".format(500))출력: The value is : 1f4 |
:X | 16진수 대문자 출력 | print("The value is : {:X}".format(500))출력: The value is : 1F4 |
:n | 숫자 포맷 출력 | print("The value is : {:n}".format(500.00))출력: The value is : 500 |
:% | 백분율 포맷. 기본 6자리 소수. 소수 없애려면 .0% 사용 | print("The value is : {:%}".format(0.80))출력: The value is : 80.000000% 소수 생략 예: {:.0%} print("The value is : {:.0%}".format(0.80)) 출력:
The value is: 80% |
:_ | 밑줄 천단위 구분자 (Python 3.6+) | print("The value is {:_}".format(1000000))출력: The value is : 1_000_000 |
:, | 쉼표 천단위 구분자 | print("The value is : {:,}".format(1000000))출력: The value is : 1,000,000 |
: | 양수 앞 공백 추가 | 주어진 숫자 앞 공백/패딩 추가 예. 숫자 5는 원하는 공백 수. print("The value is: {:5}".format(40))
출력: The value is: 40 |
:- | 음수 앞 마이너스 기호 | {:-}로 숫자 앞 마이너스(-) 기호 출력 예. print("The value is: {:-}".format(-40))
출력: The value is: -40 |
:+ | 양수 앞 플러스 기호 | {:+}로 숫자 앞 플러스(+) 기호 출력 예. print("The value is: {:+}".format(40))
출력: The value is: +40 |
:= | 등호 왼쪽 편에 +/- 기호 배치 | {:=}로 등호 앞 +/- 기호 출력 예. print("The value is {:=}".format(-40))
출력: The value is -40 |
:^ | 결과 중앙 정렬 | {:^}로 텍스트 중앙 정렬 예. 숫자 10은 10칸 공간 추가해 중앙 정렬 보여줌. print("The value {:^10} is positive value".format(40))
출력: The value 40 is a positive value 10 사용해 최종 텍스트에 10칸 추가, 치환될 값이 10칸 사이 중앙 정렬. |
:> | 결과 우측 정렬 | (:>10)로 10칸 공간, 치환 값 우측 정렬. print("The value {:>10} is positive value".format(40))
출력: The value 40 is positive value |
:< | 결과 좌측 정렬 | (:<10)로 10칸 공간, 치환 값 좌측 정렬. print("The value {:<10} is positive value".format(40))
출력: The value 40 is positive value |
클래스와 format() 사용
클래스 생성 후 .format Python 메서드 내 클래스 객체 사용 예. 플레이스홀더는 클래스 객체로 클래스 속성/멤버 참조.
예제:
format(c=MyClass())로 클래스 호출. 객체 c가 MyClass() 내 속성/메서드 참조.
class MyClass:
msg1="Guru"
msg2="Tutorials"
print("Welcome to {c.msg1}99 {c.msg2}!".format(c=MyClass()))
출력:
Welcome to Guru99 Tutorials!
딕셔너리와 format() 사용
딕셔너리도 format() 내 사용 가능:
my_dict = {'msg1': "Welcome", 'msg2': 'Guru99'}
print("{m[msg1]} to {m[msg2]} Tutorials!".format(m=my_dict))
출력:
Welcome to Guru99 Tutorials!
변수 치환 패딩
string.format() 메서드로 플레이스홀더 내 패딩, 공백 추가 가능.
예제:
아래 예제 format()로 플레이스홀더 내 공백 추가. 공백 추가하려면 콜론(:) 뒤 중괄호 내 공백 수 지정. 플레이스홀더 모양: {:5}.
print("I have {:5} dogs and {:5} cat".format(2,1))
출력:
I have 2 dogs and 1 cat
인덱스도 플레이스홀더 내 사용 가능 예: {0:5}에서 0은 format 내 첫 값 참조.
print("I have {0:5} dogs and {1:5} cat".format(2,1))
출력:
I have 2 dogs and 1 cat
요약
- Python 문자열 클래스 중요 내장 명령 format()으로 플레이스홀더 문자열 유효 값으로 치환/변환.
- 문자열 모듈 Python 플레이스홀더 중괄호 정의, 예: “Welcome to Guru99 {}”.format(‘value here’).
- 플레이스홀더 빈 {} 가능, 변수 예: {name}, 숫자 인덱스 예: {0}, {1} 등.
- 플레이스홀더 내부 Python 문자열 포매팅으로 패딩, 중앙 정렬, 숫자 포매팅 가능.