Python/파이썬 기초

파이썬 format 함수 예제(순서 지정, 정수/소수점 지정, 정렬 등)

jimmy_AI 2022. 3. 17. 22:48
반응형

파이썬 format 사용 문자열 포맷팅 방법

이번 시간에는 파이썬의 format 기능을 통하여 순서, 소수점 포맷팅 양식, 정렬 형태 지정 등의

문자열 형식을 지정하는 예제에 대하여 다루어보도록 하겠습니다.

 

 

format 기본 사용법

기본적인 format 함수를 이용한 포맷팅 방법은

중괄호 {} 를 이용하여 원하는 문자열이 들어갈 자리를 지정해주시고,

이후 문자열.format(들어갈 문자를 순서대로 작성)로 지정해주는 형태입니다.

a = '오늘은 {}년 {}월 {}일입니다.'.format(2022, '3', '17')

print(a) # 오늘은 2022년 3월 17일입니다.

기본적으로, 숫자는 숫자형(정수, 실수) 혹은 문자열 형식으로 모두 포맷팅이 가능합니다.

 

아래와 같이 변수로 지정된 값을 format 내에 넣어서 많이 사용합니다.

 

year = 2022
month = '3'
day = '17'

a = '오늘은 {}년 {}월 {}일입니다.'.format(year, month, day)

print(a) # 오늘은 2022년 3월 17일입니다.

 

 

format 순서 지정 사용법

{} 내에 0, 1, 2 등의 정수를 넣어 문자열이 포맷팅되는 순서를 정할 수 있습니다.

.format() 내에 등장하는 순서대로 가장 처음이 0을 기준으로 배정됩니다.

 

또한, 같은 숫자가 여러번 등장하는 것도 가능합니다.

year = 2022
month = '3'
day = '17'

a = '오늘은 {0}년 {1}월 {2}일입니다.'.format(year, month, day)
b = '오늘은 {1}년 {2}월 {0}일입니다.'.format(year, month, day)
c = '오늘은 {0}년 {0}월 {0}일입니다.'.format(year, month, day)

print(a) # 오늘은 2022년 3월 17일입니다.
print(b) # 오늘은 3년 17월 2022일입니다.
print(c) # 오늘은 2022년 2022월 2022일입니다.

단, 빈 괄호와 숫자가 들어간 괄호를 동시에 사용하는 것은 불가능합니다.

반응형

format 정수, 소수점 포맷팅 지정 방법

format을 이용한 문자열 포맷팅 양식에서 소수점 출력 형식을 지정하려면

:4d, :.2f 처럼 : 뒤에 원하는 출력 형식의 형태를 작성해주시면 됩니다.

 

순서 지정 방법과 함께 0:2d 처럼 사용하는 것도 가능합니다.

# 문자열 형식이 아니라 숫자 형식임에 유의
year = 2022
month = 3
day = 17

a = '오늘은 {:10d}년 {:.1f}월 {:07d}일입니다.'.format(year, month, day)
b = '오늘은 {2:09.2f}년 {2:10.4f}월 {2:5d}일입니다.'.format(year, month, day)

print(a) # 오늘은       2022년 3.0월 0000017일입니다.
print(b) # 오늘은 000017.00년    17.0000월    17일입니다.

참고로, 여기서 {} 내에 할당할 값은 문자열로된 숫자가 아닌 숫자 자료형이어야 합니다.

 

정수 포맷팅의 경우 :5d는 5자리 중 남는 앞 자리를 공백으로 채우는 경우이며(128->  128),

:05d 형식은 5자리 중 남는 앞 자리를 0으로 채웁니다(128->00128).

 

소수점 포맷팅에 관한 내용은 아래에 첨부한 글을 참고해보시면 도움이 되실 것입니다.

 

파이썬 소수점 출력 포맷 지정 방법 정리(%.2f, %10.2f, %010.2f 등)

파이썬 소수점 포맷팅 자릿수 지정, 공백 채움, 0 채움 예제 이번 글에서는 파이썬에서 소수점을 출력할 때, 원하는 자릿수까지 지정하는 방법과 칸 수를 지정하여 남은 앞 칸들에 공백 혹은 0을

jimmy-ai.tistory.com

 

 

format 정렬 방법, 채울 문자 종류 지정

: 뒤에 <, ^, >로 각각 왼쪽, 가운데 및 오른쪽 정렬 형태를 지정할 수 있습니다.

 

:>10 식으로 사용하면 10자리 공백 채움 오른쪽 정렬을 의미하며,

:*>10 처럼 채움 문자를 *로 지정하는 식의 정렬도 가능합니다.

print('정렬 시작:{:<20}끝'.format('abc')) # 정렬 시작:abc                 끝
print('정렬 시작:{:^20}끝'.format('abc')) # 정렬 시작:        abc         끝
print('정렬 시작:{:>20}끝'.format('abc')) # 정렬 시작:                 abc끝

print('정렬 시작:{:*<20}끝'.format('abc')) # 정렬 시작:abc*****************끝
print('정렬 시작:{:&^20}끝'.format('abc')) # 정렬 시작:&&&&&&&&abc&&&&&&&&&끝
print('정렬 시작:{:!>20}끝'.format('abc')) # 정렬 시작:!!!!!!!!!!!!!!!!!abc끝