format() 예제 - 소수점 2자리까지 표현.
txt = "{price:.2f} 달러."
print(txt.format(price = 43))
결과보기: 43.00 달러.
format() 정의
문자열 안 지정 값을 포맷 후, 해당 Placeholder(자료표시자)에 넣음.
※ Placeholder는 중괄호 {} 사용해 표현. (※ 아래 설명서 참고)
※ format() 메서드는 형식 변경된 문자열을 반환.
cf.
format_map() 메서드
format() 구문
string.format(value1, value2...)
[매개변수]
value1, value2...
필수. 형식 변경되어 자리표시자에 들어가야 할 값들.
※ value는 제거할 요소의 위치를 지정하는 숫자일 수 있음.
※ value 유형 종류.
① 쉼표로 구분된 값 목록
② key = value 목록
③ 위 두 방법의 조합.
※ value는 모든 데이터 유형 가능.
Placeholder (자리표시자)
자리표시자는 {} 안에 '이름' , '숫자' , '빈 공백' 넣어 표시.
(예) {name}, {0}, {}
[예제]
hz1 = "{site}, {host}".format(site = "홈짱닷컴", host = "Homzzang.com")
hz2 = "{0}, {1}".format("홈짱닷컴","Homzzang.com")
hz3 = "{}, {}".format("홈짱닷컴","Homzzang.com")
print(hz1) # 홈짱닷컴, Homzzang.com
print(hz2) # 홈짱닷컴, Homzzang.com
print(hz3) # 홈짱닷컴, Homzzang.com
format() 타입
:< : 왼쪽 정렬 (사용 가능한 공간 내)
# 값 자리를 8자리 설정 후, 왼쪽 정렬.
hz = "홈짱닷컴 Homzzang.com {:<8} 오픈."
print(hz.format(2012))
결과값: 홈짱닷컴 Homzzang.com 2012 오픈.
:> : 오른쪽 정렬 (사용 가능한 공간 내)
# 값 자리를 8자리 설정 후, 오른쪽 정렬.
hz = "홈짱닷컴 Homzzang.com {:>8} 오픈."
print(hz.format(2012))
결과값: 홈짱닷컴 Homzzang.com 2012 오픈.
:^ : 가운데 정렬 (사용 가능한 공간 내).
# 값 자리를 8자리 설정 후, 가운데 정렬.
hz = "홈짱닷컴 Homzzang.com {:^8} 오픈."
print(hz.format(2012))
결과값: 홈짱닷컴 Homzzang.com 2012 오픈.
:= : 기호를 가장 왼쪽에 배치.
# 값 자리를 8자리 설정 후, 부호를 가장 왼쪽에 배치.
txt = "현재 온도: {:=8} 도"
print(txt.format(-5))
결과값: 현재 온도: - 5 도.
:+ : 양수에 + 기호 추가.
txt = "가능값: {:+} ~ {:+}"
print(txt.format(-3, 4))
결과값: 가능값: -3 ~ +4
:- : 음수만 - 기호 표시. (※ 양수에 + 기호 사용 X)
txt = "가능값: {:-} ~ {:-}"
print(txt.format(-3, 4))
결과값: 가능값: -3 ~ 4
: : 양수는 앞에 공백 삽입. (※ 음수는 - 기호 삽입.)
txt = "가능값: {: } ~ {: }"
print(txt.format(-3, 4))
결과값: 가능값: -3 ~ 4
:, : 쉼표로 천 단위 구분. ★
txt = "수입: {:,} 원"
print(txt.format(1000000))
결과값: 수입: 1,000,000 원
: _ : 천 단위 구분 기호로 밑줄 사용.
txt = "수입: {:_} 원"
print(txt.format(1000000))
결과값: 수입: 1_000_000 원
:b : 바이너리 형식
txt = "십진수 {0} = 이진수 {0:b}"
print(txt.format(5))
결과값: 십진수 5 = 이진수 101
:c : 값을 해당 유니코드 문자로 변환.
예제 준비 중.
:d : 10 진수 형식
# 이진수 5를 십진수로 변환.
txt = "이진수 101 = 십진수 {:d}"
print(txt.format(0b101))
결과값: 이진수 101 = 십진수 5
:e : 소문자 e 사용 과학적 표기법.
txt = "5 지수표기법: {:e}"
print(txt.format(5))
결과값: 5 과학표기법: 5.000000e+00
:E : 대문자 E 사용 과학적 표기법.
txt = "숫자 5의 과학표기법: {:E}"
print(txt.format(5))
결과값: 숫자 5의 과학표기법: 5.000000E+00
:f : 소수점 표시. (소문자 inf, nan 사용.) ※ 기본: 6자리
# 소수점 2자리
txt = "{:.2f}"
print(txt.format(34)) # 34.00
# 소수점 6자리 (기본값 사용)
txt = "{:f}"
print(txt.format(34)) # 34.000000
# 소수점 포함 전체 10자리인데, 그 중 소수점은 3자리 차지.
n = 12.34
print("{:10.3f}".format(n)) # 12.340
# 소문자 inf (무한대 = 1/0)
x = float('inf')
txt = "{:f}"
print(txt.format(x)) # inf
:F : 소수점 표시. (대문자 INF, NAN 사용.) ※ 기본: 6자리
# 소수점 2자리
txt = "{:.2F}"
print(txt.format(34)) # 34.00
# 소수점 6자리 (기본값 사용)
txt = "{:F}"
print(txt.format(34)) # 34.000000
# 소수점 포함 전체 10자리인데, 그 중 소수점은 3자리 차지.
n = 12.34
print("{:10.3F}".format(n)) # 12.340
# 대문자 INF (무한대 = 1/0)
x = float('inf')
txt = "{:F}"
print(txt.format(x)) # INF
:g : 일반 형식
예제 준비 중.
:G : 일반 형식 (과학적 표기법에 대문자 E 사용)
예제 준비 중.
:o : 8 진수 형식
txt = "십진수 {0} = 팔진수 {0:o}"
print(txt.format(10))
결과값: 십진수 10 = 팔진수 12
:x : 16 진수 형식 (소문자 사용)
txt = "10진수 {0} = 16진수 {0:x}"
print(txt.format(255))
결과값: 10진수 255 = 16진수 ff
:X : 16 진수 형식 (대문자 사용)
txt = "10진수 {0} = 16진수 {0:X}"
print(txt.format(255))
결과값: 10진수 255 = 16진수 FF
:n : 숫자 형식
예제 준비 중.
:% : 백분율 형식
# 소수점 있는 백분율 (기본: 6자리)
txt = "{:%}"
print(txt.format(0.25)) # 25.000000%
# 소수점 없는 백분율
txt = "{:.0%}"
print(txt.format(0.25)) # 25%
format() 예제 - 문자열 포맷
a = 3
b = 4
print("{} * {} = {}".format(a,b,a*b))
결과값: 3 * 4 = 12
[예제] 소수점 자릿수 맞추기.
a = 3
b = 4
print("{} * {:.3f} = {:.3f}".format(a,b,a*b))
결과값: 3 * 4.000 = 12.000
[예제] 소수점 포함 전체 10자리인데, 그 중 소수점은 3자리 차지.
a = 12.34
print("{:10.3f}".format(a))
결과값: 12.340
PS. 주의
전체자릿수 숫자는 지정 소수점 자릿수로 숫자를 다 표현할 수 있을 때만 유효.
즉,
위 예제 경우. (정수 2자리 + 소수점 + 소수점 이하 3자리) 표시 위해 최소 6자리 공간이 필요한데, 6미만의 숫자를 전체 자릿수로 지정할 경우 이 숫자는 무시되고 소수점 이하 자릿수 지정만 유효하게 됨. 그 결과 결과값은 12.340 됨.
(예)
a = 12.34
print("{:5.3f}".format(a)) # 12.340