[Python] 파이썬 f-string 사용법 | 문자열 포맷팅 방법

파이썬을 사용하다보면 굉장히 많이 접하게 되는 것 중 하나가 문자열 포맷팅인데요.

저는 원래 .format() 함수를 이용하여 문자열 포맷팅을 하였지만 파이썬 버전 3.6 업데이트 이후 f-string을 유용하게 사용하고 있습니다.

그래서 본 포스팅에서는 파이썬 f-string을 이용한 간편한 문자열 포맷팅 방법에 대해 알아보겠습니다.

파이썬 f-string 공식 설명

문자열 포맷팅이란? 🧐

먼저 문자열 포맷팅에 대해 간략히 알아보자면, 한마디로 문자열이 출력되는 형식을 의미합니다. 파이썬 코딩을 하다보면 문자열에서 특정한 부분만 바뀌고 나머지는 기존에 정해놓은 형식대로 출력하는 것이 그 예입니다.

예로 피시방 컴퓨터에서 남은 시간을 알려주는 프로그램이라 가정했을때,

print("5시간 남았습니다.")
print("4시간 남았습니다.")
print("3시간 남았습니다.")
print("2시간 남았습니다.")
print("1시간 남았습니다.")

이렇게 시간별로 미리 작성된 문자열을 출력할 수 도 있지만,

문자열 포맷팅을 통해 훨씬 간편하고 메모리를 아끼는 방향으로 출력할 수 있습니다.

time = 5

while time:
  print(f'{time}시간 남았습니다.')
  time -= 1

f-string 사용법

f-string을 사용하는 방법은 매우 간단한데요. 딱 두가지만 기억하시면 될 거 같습니다. 문자열 맨 앞쪽에 “f”를 붙여주시는 것과 중괄호를 써서 변해야 하는 값을 넣어주는 것.

즉, f’정해진 포맷 {변수} 정해진 포맷’ 형식인 것입니다.

예시

예시로 아래 파이썬 스크립트를 실행하면,

age = 500 # 변수

d = {'name': '준장', 'hobby': '책 읽기'} # 딕셔너리

obj = ['콜라','사이다'] # 리스트 

introduction = f'안녕하세요. 제 이름은 {d["name"]}이며, 나이는 {age}살이고, 취미는 {d["hobby"]}며, {obj[0]}를 좋아합니다.' # f-string

print(introduction) # f-string 출력

아래와 같은 결과값이 나옵니다.

"안녕하세요. 제 이름은 준장이며, 나이는 500살이고, 취미는 책 읽기며, 콜라를 좋아합니다."

파이썬 f-string 사용예시

중괄호 출력 방법

하나 들 수 있는 의문점은 f-string 자체에서 변수를 받아 들일때 {} 중괄호를 사용하다보니 어떻게 중괄호 자체를 출력할 수 있을까 인데요.

그냥 괄호를 연속해서 쓰시면 됩니다.

brackets = '괄호'

example = f'{{{brackets}}}, {{brackets}}'

{} 중괄호 쓰는 법 파이썬 f-string

이렇게 중괄호 안에 출력되었으면 하는 값이 변수면 {} 세개를, 문자열이면 {} 두개를 겹쳐서 사용하시면 됩니다.

정렬

f-string 을 사용해서 문자열을 정렬할 수 도 있습니다.

print('1234567890') # 정렬 위치 표시
# f-string 왼쪽 정렬
string1 = '*'
left = f'{string1:<10}'
print(left)
 
# f-string 가운데 정렬
string2 = '*'
center = f'{string2:^10}'
print(center)
 
# f-string 오른쪽 정렬
string3 = '*'
right = f'{string3:>10}'
print(right)

(‘123456789’ 는 자릿수와 위치를 표현 )

정렬 결과값 f-string

위 예시에서 보이듯이 {중괄호} 안에 있는 변수 뒤로 ‘:’ (콜론)을 붙히고, 왼쪽 정렬 ‘<‘ , 오른쪽 정렬 ‘>’ , 중앙 정렬 ‘^’ 을 정해서 넣어준 후 자릿수를 의미하는 숫자를 넣으시면 됩니다.

number = 5 
print('1234567890') # 정렬 위치 표시
print(f'{number:0<5}') # 3번째 줄
print(f'{number:>10.2f}') # 4번째 줄

정렬 파이썬 f-string 결과값

또한, ‘:’ 과 정렬문자( <, >, ^ ) 사이에 ‘0’과 같은 숫자를 넣어 빈 자릿수들을 채워 줄 수 있고 변수들을 추가 포맷팅 해줄 수 있습니다.

3번째 줄을 해석하면, number라는 변수의 값을 출력하되 이 숫자의 빈 자릿수는 ‘0’으로 채워지며 ‘<‘ 왼쪽으로 정렬되고, 총 ‘5’ 자릿수입니다.

4번째 줄을 해석하면, number라는 변수의 값을 출력하되 이 숫자는 ‘>’ 오른쪽으로 정렬되고, 총 ’10’자릿수이며, ‘.2f’ 소수점 아래 두 자리까지 표현되는 실수입니다.

다른 포맷팅 방식

‘%’

name = '준장' #문자열
age = 14.2 #실수
won = 5000 #정수

string = '제 이름은 %s이고, 나이는 %.2f살이고, 지갑에 %d원이 있습니다.'%(name,age,won)
print(string)
결과값: 제 이름은 준장이고, 나이는 14.20살이고, 지갑에 5000원이 있습니다.

이렇게 ‘%’를 사용해서 문자열 포맷팅을 하려면 해당되는 변수의 타입에 따라 %s (문자열), %d (정수), %f (실수) 등 맞는 문자를 항상 구분해서 써줘야 되는 번거로움이 있습니다.

‘% + 자료형에 맞는 문자’%(값) 형태로 사용됩니다.

문자자료형
%d정수
%f실수
%s문자열
%o8진수
%x16진수

‘%’ 문자 자체를 출력하고 싶으면 ‘%%’ 두번 써주시면 됩니다.

.format() 함수

format() 함수는 ‘%’ 보다 비교적 쉽게 문자열 포맷팅이 가능합니다.

name = '준장' #문자열
age = 14.2 #실수
won = 5000 #정수

string = '제 이름은 {}이고, 나이는 {:.2f}살이고, 지갑에 {}원이 있습니다.'.format(name,age,won)
print(string)
결과값: 제 이름은 준장이고, 나이는 14.20살이고, 지갑에 5000원이 있습니다.

f-string과 마찬가지로 format 함수를 사용할 때는 변하는 위치에 {}를 넣어주고 문자열이 끝나는 곳에 .format() 함수를 호출해서 넣어줄 값들을 순서대로 정의해 주시면 됩니다.

결론

이렇게 본 포스팅에서는 문자열 포맷팅이란 무엇이고, 파이썬 f-string 을 사용하는 방법에 대해 알아보았습니다.

다른 포맷팅 방식들도 존재하지만 조금 더 직관적이고 간편한 f-string을 자주 사용하게 되는 거 같습니다.

답글 남기기