조금씩 꾸준히 완성을 향해

[Python] String format (% 포맷팅, format 함수, f-string) 본문

Python/문법

[Python] String format (% 포맷팅, format 함수, f-string)

all_sound 2022. 8. 24. 23:19

Python에서 문자열 format을 할 때는 크게 3가지 방법을 사용한다.

< % format >

데이터 타입에 따라 선택해서 써야 하니 잘 숙지하고 있어야 한다.

 

%d 정수 (int)
%s 문자열 (string)
%f 실수 (float)
%05d 정수형 숫자 다섯 자리, 남는 부분을 0으로 채움
%.2f 소소수점 둘째 자리의 실수형 숫자

 

▶ 사용 예제

name, age = '최다솔', 30
print('나는 %s입니다.' % name, '나이는 %d살입니다.'% age)
 #나는 최다솔입니다. 나이는 30살입니다.

이렇게 넣고 싶은 변수 타입에 따라 종류를 잘 골라서 넣어줘야 한다.

year = 2022
month = 8
day = 23
print('%d-%02d-%02d' %(year, month, day)) 
 #2022-08-23

month와 day의 값이 한 자리 수일 경우 2자리로 만들고 싶을 때는 위와 같이 사용하면 된다.
%02d => '숫자는 두 자리 수가 되어야 하고, 모자라다면 앞에 0으로 채워라' 라는 뜻이다.

height = 172.5
print('키는 %.2fcm 입니다.' %height)
#키는 172.50cm 입니다.

실수와 함께 사용할 때는 소수점 자리수를 지정할 수 있다.
%.2f => '소수점 둘째 자리 수까지 반올림해서 가져와라' 라는 뜻이다.

 

< format 함수 >

 

보다 더 직관적이고 간편한 메소드이다.

▶ 사용 예제

p = 'pizza'
c = 'chicken'
print('I like {} and {}'.format(p, c))
 #I like pizza and chicken

문자열에 중괄호{ }가 여러개이고 비어있으면, format 소괄호( ) 안의 값이 순서대로 매칭된다.

p = 'pizza'
c = 'chicken'
print('I like {1} and {0}'.format(p, c))
 #I like chicken and pizza

중괄호{ } 안에 index 번호를 넣어주면, format 소괄호( ) 안의 값이 index에 맞게 매칭된다.


그 밖에 자리수 지정과 부동소수점 지정은 % format 과 사용법이 유사하다.

year = 2022
month = 8
day = 23
print('{}-{:02}-{:02}'.format(year, month, day)) 
 #2022-08-23

위에서 봤던 예제를 그대로 format 함수로 바꾸어 보았다.
month와 day는 두자리 숫자가 되고, 그에 못미치면 0으로 채워진다.

a = 4.5560
b = 'Argentine Pesos'
c = 1
print('{1:.2f} {0} are worth US{2}$'.format(b, a, c))
 #4.56 Argentine Pesos are worth US1$

인덱싱과 부동소수점 지정을 합친 예제이다.
format 함수 안의 1, 0, 2 index가 순서대로 문자열 중괄호 안에 들어가게 되고,
a 변수의 값은 소수점 2자리수까지 출력된다.

print('{{우리집}}에 {} 놀러와요'.format('자주')) 
 #{우리집}에 자주 놀러와요

참고로 중괄호를 format 용이 아닌 그냥 문자로 사용하려면 두 번 겹쳐 넣으면 된다.


▶ format 정렬

print('{:<20}'.format('good'))  #왼쪽 정렬, 20자리 차지
print('{:^20}'.format('good'))  #가운데 정렬, 20자리 차지
print('{:>20}'.format('good'))  #오른쪽 정렬, 20자리 차지
print('{:*^20}'.format('good')) #가운데 정렬, 20자리 차지, 빈 공간을 *문자로 채움

'''
good                
        good        
                good
********good********
'''

 

< f-string >


가장 최신 문법이며 쓰임이 가장 간결하다.

문자열 따옴표 앞에 f를 붙이고, 문자열 안에서 중괄호{ }를 이용해 변수나 계산식을 입력할 수 있다.

a = 3
b = 'wow'
print(f'I have {a} children {b}') #I have 3 children wow
print(f'I have {a+2} children {b}') #I have 5 children wow



자리수 지정과 부동소수점 지정은 format 함수와 사용법이 유사하다.
중괄호 사이에 {변수 : 소수점자리수} 형식으로 넣어주면 된다.

num1 = 3.75986
num2 = 3

print(f'example1 : {num1:.0f}') # 4
print(f'example2 : {num1:.1f}') # 3.8
print(f'example3 : {num1:.2f}') # 3.76

print(f'example4 : {num2:02d}') # 03
print(f'example5 : {num2:05d}') # 00003


정렬하는 방법 또한 format 메소드와 동일하니 생략한다.