Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python f-string 완벽 가이드: 문자열 포매팅의 모든 것

파이썬 f-string은 문자열 안에 표현식을 직접 삽입할 수 있게 해주는 강력한 기능입니다. 표현식에는 변수 값, 수학 계산 결과, 또는 다른 파이썬 값이 들어갈 수 있습니다. f-string은 일반 문자열 앞에 f를 붙인다는 점에서 쉽게 구별할 수 있습니다.


파이썬에서 문자열을 작성하다 보면 문자열의 일부를 특정 값으로 바꿔야 하는 경우가 자주 생깁니다. 예를 들어, 사용자가 콘솔에 입력한 값을 문자열에 포함해 출력하고 싶을 수 있습니다.

파이썬은 오랫동안 여러 가지 문자열 포매팅 방식을 지원해 왔으며, Python 3.6에서는 새로운 방식인 f-string(포맷팅 문자열 리터럴)이 도입되었습니다.

이 글에서는 다양한 예제와 함께 파이썬 f-string의 기본기를 차근차근 살펴보겠습니다. 글을 다 읽고 나면 f-string을 능숙하게 활용할 수 있게 될 것입니다.

기존의 파이썬 문자열 포매팅 방식

Python 3.6 이전에는 두 가지 방법으로 문자열을 포매팅할 수 있었습니다. 바로 퍼센트(%) 포매팅과 str.format() 메서드입니다.

퍼센트(%) 포매팅

퍼센트 포매팅은 파이썬 초창기부터 사용된 방식으로, 하나 또는 여러 개의 값을 문자열에 삽입할 때 사용됩니다.

다음은 퍼센트 포매팅의 실제 사용 예시입니다:

email = "lindsay.ballantyne@gmail.com"
new_string = "Your email address is %s." % email
print(new_string)

실행 결과:

Your email address is lindsay.ballantyne@gmail.com.

위 코드에서 %s는 문자열 내에서 값을 대체할 자리표시자(placeholder) 역할을 합니다. 코드 끝에 % 기호와 함께 email 변수를 지정하면, %s 위치에 해당 값이 삽입됩니다.

str.format() 메서드

Python 2.6에서는 새로운 문자열 포매팅 방법인 format() 함수가 소개되었습니다.

두 개의 값을 하나의 문자열에 넣고 싶다면 format() 메서드를 다음과 같이 활용할 수 있습니다:

name = "Lindsay Ballantyne"
email = "lindsay.ballantyne@gmail.com"
new_string = "Hello, {}. Your email address is {}.".format(name, email)
print(new_string)

실행 결과:

Hello, Lindsay Ballantyne. Your email address is lindsay.ballantyne@gmail.com.

위 코드에서는 프로그램 사용자의 이름과 이메일 주소를 저장하는 name, email 두 변수를 정의한 뒤, .format() 구문을 사용해 중괄호 {} 위치에 각 값을 순서대로 삽입했습니다.

파이썬 f-string 문법

f-string은 문자열 리터럴 안에 표현식을 직접 삽입하는 기능입니다. 변수, 문자열, 함수 호출 결과 등을 문자열에 포함시킬 수 있습니다. f-string은 문자열 본문이 시작되기 전에 소문자 f를 접두사로 붙여 만들며, 대문자 F를 사용해도 동일하게 동작합니다.

f-string은 중괄호 {}를 사용해 포매팅할 값을 표시하며, Python 3.6에서 도입된 이후 문자열 포매팅 작업을 한층 간편하게 만들어 주었습니다.

참고로, 문자열 포매팅을 '문자열 보간(string interpolation)'이라고 부르기도 합니다. 두 용어 모두 하나의 문자열에 다른 값을 삽입한다는 같은 개념을 가리킵니다.

f-string의 기본 문법은 다음과 같습니다:

f"This is a string."

이렇게 하면 포맷팅 문자열 리터럴이 정의되며, 중괄호 {}를 사용해 원하는 값을 추가할 수 있습니다.

f-string 기본 예제

이름 "Lindsay Ballantyne"을 문자열에 추가하고 싶다고 가정해 보겠습니다. 다음과 같이 작성할 수 있습니다:

name = "Lindsay Ballantyne"
print(f"Your name is {name}.")

실행 결과:

Your name is Lindsay Ballantyne.

위 코드에서는 사용자의 이름을 저장하는 name 변수를 선언한 뒤, f-string을 통해 그 값을 문자열에 직접 삽입했습니다. format() 메서드나 % 포매팅보다 문법이 훨씬 간결하다는 점이 눈에 띕니다.

f-string의 장점은 여기서 끝나지 않습니다. f-string 안에서는 함수나 임의의 표현식도 평가할 수 있습니다. 예를 들어 f-string 안에서 수학 연산을 수행하고 싶다면 다음과 같이 작성하면 됩니다:

name = "Lindsay Ballantyne"
print(f"Your name is {name}. On your next birthday, you will be {22 + 1}.")

실행 결과:

Your name is Lindsay Ballantyne. On your next birthday, you will be 23.

문자열 안에서 수학 연산이 성공적으로 수행된 것을 확인할 수 있습니다. f-string 내부의 표현식은 프로그램 실행 시점(run-time)에 평가되기 때문입니다. 수학식 22 + 1을 중괄호로 감싸기만 하면 그 결과값이 문자열에 그대로 반영됩니다.

여러 줄로 된 f-string

f-string 문법은 여러 줄에 걸친 문자열 포매팅도 지원합니다. 여러 개의 f-string을 괄호로 묶으면 멀티라인 f-string을 만들 수 있습니다.

여러 줄 문자열에서 값을 포매팅하고 싶다면 다음과 같이 작성할 수 있습니다:

name = "Lindsay Ballantyne"
email = "lindsay.ballantyne@gmail.com"
age = 22

profile = (
	f"Name: {name} \n"
	f"Email: {email} \n"
	f"Age: {age} \n"
)

print(profile)

실행 결과:

Name: Lindsay Ballantyne
Email: lindsay.ballantyne@gmail.com
Age: 22

위 코드에서는 사용자 정보를 담은 세 변수(name, email, age)를 선언한 뒤, 이 변수들을 활용해 여러 줄짜리 문자열을 만들었습니다.

주목할 점은 멀티라인 문자열의 각 줄마다 f를 붙였다는 것입니다. 각 줄 앞에 f를 붙이지 않으면 해당 줄에는 f-string 문법이 적용되지 않으니 반드시 기억해 두세요.

f-string에서 특수 문자 다루기

f-string을 실무에서 활용하기 전에 알아두어야 할 마지막 주제는 특수 문자 처리 방법입니다. f-string을 사용할 때 염두에 두어야 할 몇 가지 규칙을 살펴보겠습니다.

따옴표 사용하기

f-string 안의 표현식에서 따옴표를 사용할 수 있습니다. 단, f-string 전체를 감싸는 따옴표와 다른 종류의 따옴표를 사용해야 합니다.

print(f"{'It is Thursday!'}")

실행 결과:

It is Thursday!

위 예제에서는 f-string 전체를 큰따옴표("")로 감싸고, 중괄호 안의 표현식에는 작은따옴표('')를 사용했습니다.

딕셔너리 사용하기

파이썬 딕셔너리의 값을 참조할 때는 따옴표가 필요합니다. 이때 f-string 전체를 감싸는 따옴표와 다른 종류의 따옴표를 사용해야 오류 없이 깔끔하게 처리할 수 있습니다.

딕셔너리와 f-string을 함께 사용하는 예제는 다음과 같습니다:

user = {'name': "Lindsay Ballantyne", 'email': "lindsay.ballantyne@gmail.com"}
print(f"Hello, {user['name']}. Your email address is: {user['email']}.")

실행 결과:

Hello, Lindsay Ballantyne. Your email address is: lindsay.ballantyne@gmail.com.

딕셔너리의 키를 참조할 때는 작은따옴표('')를 사용했고, f-string 전체는 큰따옴표("")로 감쌌습니다. 이처럼 따옴표 종류를 구분해 사용하면 문자열 포매팅 오류를 예방할 수 있습니다.

중괄호 출력하기

f-string 안에서 중괄호 자체를 출력하려면 중괄호를 두 겹으로 겹쳐 사용해야 합니다.

print(f"{{This is a test}}")

실행 결과:

{This is a test}

결과물에는 중괄호가 한 쌍만 나타났습니다. f-string은 한 쌍의 중괄호를 '문자열 포매팅이 이루어진다'는 신호로 사용하기 때문에, 실제로 출력되는 것은 이중 중괄호 안에 있는 한 쌍뿐입니다.

해시태그(#) 사용하기

f-string의 표현식 안에 해시(#) 기호를 포함하면 문법 오류(syntax error)가 발생할 수 있습니다. 파이썬에서 #은 주석을 의미하기 때문입니다.

문자열에 #을 넣고 싶다면, f-string의 중괄호 바깥쪽에 배치하세요. 실제 예제는 다음과 같습니다:

user_id = "202"
print(f"User ID: #{user_id}")

실행 결과:

User ID: #202

# 기호를 f-string의 중괄호 앞에 배치함으로써 문자열에 올바르게 출력되도록 했습니다.

마치며

파이썬 f-string은 문자열 리터럴 안에 표현식을 삽입할 수 있는 현대적이고 강력한 도구입니다.

기존 포매팅 방식과 비교했을 때 f-string의 장점은 매우 많습니다. 무엇보다 가독성이 뛰어나고, 여러 개의 값을 다룰 때도 안정적으로 동작합니다.

이 글에서는 f-string이 기존 문자열 포매팅 방식들과 어떻게 다른지, 그리고 실제 코드에서 f-string을 어떻게 활용하는지 예제와 함께 살펴보았습니다. 이제 전문 개발자처럼 파이썬 f-string을 자유롭게 사용할 준비가 되셨습니다!