파이썬 문자열 포맷팅: format 함수와 f 문자열 포맷팅의 활용 방법

수현·2024년 1월 1일
2

Python

목록 보기
2/12
post-thumbnail

파이썬에서 문자열 포맷팅은 프로그래밍을 하면서 자주 마주치는 필수적인 요소입니다. 이는 문자열 내에 어떤 값을 삽입하거나 형식을 맞추는 데 사용되죠. 이 글에서는 파이썬의 두 가지 주요 문자열 포맷팅 기법, 즉 format 함수f 문자열 포매팅에 대해 알아보겠습니다.

0. 문자열 포맷팅

문자열 포맷팅(String Formatting)은 문자열 내에 어떤 값을 삽입하거나, 특정 형식에 맞게 문자열을 조정하는 방법입니다. 이는 코드 내에서 동적인 데이터를 문자열로 표현할 때 매우 유용합니다. 예를 들어, 사용자의 이름이나 나이와 같은 변수를 문자열 내에 표현하고자 할 때 문자열 포맷팅을 활용할 수 있습니다.

파이썬에서는 크게 두 가지 방식으로 문자열 포맷팅을 할 수 있습니다:

  1. format 함수: 이 메소드(method)를 사용하면 중괄호 {}를 사용해 문자열 내에 포맷할 값을 지정할 수 있습니다. format 메소드는 파이썬 2.6부터 도입되었으며, 유연하고 직관적인 문자열 포맷팅이 가능합니다.

  2. f 문자열 포매팅: Python 3.6부터 추가된 이 기법은 문자열 앞에 f 혹은 F를 붙여 사용합니다. 중괄호 {} 안에 직접 변수(variable)를 넣거나, 간단한 표현식을 작성할 수 있어 매우 편리합니다.

1. format 함수를 이용한 포맷팅

format 함수는 문자열의 중괄호 {} 안에 특정 값을 삽입하는 데 사용됩니다. 이 메소드는 다양한 방식으로 활용할 수 있으며, 문자열 내에서 여러 값을 조정하고 형식화합니다.


숫자로 대입

# 코드
text = "{}번 고객님, 환영합니다!".format(1)
print(text)

# 출력
1번 고객님, 환영합니다!

여기서 {} 안에 직접 숫자 1이 대입되어 문자열이 완성됩니다.


문자열로 대입

# 코드
name = "홍길동"
greeting = "{}, 안녕하세요!".format(name)
print(greeting)

# 출력
홍길동, 안녕하세요!

이 예에서는 변수 name에 저장된 문자열이 {} 자리에 들어갑니다.


변수로 대입

# 코드
age = 30
text = "나이는 {}살 입니다.".format(age)
print(text)

# 출력
나이는 30살 입니다.

변수 age의 값이 문자열 내에 삽입됩니다.


2개 이상의 값 대입

# 코드
format_string = "{}년 {}월 {}일".format(2024, 1, 1)
print(format_string)

# 출력
202411

여러 개의 값을 중괄호 {}를 사용해 순서대로 문자열에 삽입할 수 있습니다.


변수 이름 지정 후 대입

# 코드
text = "이름: {name}, 나이: {age}".format(name="홍길동", age=30)
print(text)

# 출력
이름: 홍길동, 나이: 30

변수의 이름을 직접 지정하여 값을 넣을 수도 있습니다. 이는 코드의 가독성을 높이는 데 유용합니다.


인덱스와 이름을 혼용

format 함수를 사용할 때 인덱스 번호와 이름을 함께 혼용하여 사용할 수 있습니다. 이를 통해 복잡한 문자열 포맷팅도 쉽게 처리할 수 있습니다.

# 코드
text = "{0}은 {1}보다 {2}이 낮다. 하지만 {name}은 {1}에 가장 가깝다.".format("수성", "태양", "온도", name="지구")
print(text)

# 출력
수성은 태양보다 온도가 낮다. 하지만 지구는 태양에 가장 가깝다.

이 예시에서는 인덱스 0, 1, 2와 이름 name을 혼합하여 사용했습니다.


왼쪽과 오른쪽 정렬

< 기호를 이용하여 문자열 내에서 특정 필드를 왼쪽에 정렬할 수 있습니다.

# 코드
text = "{:<10}".format("안녕")
print(text + "하세요")

# 출력
안녕       하세요

{:<10}안녕을 10자리 중 왼쪽에 정렬하고 나머지는 공백으로 채웁니다.

오른쪽 정렬은 > 기호를 이용해 적용합니다.

# 코드
text = "{:>10}".format("안녕")
print("여보세요" + text)

# 출력
여보세요       안녕

여기서 {:>10}안녕을 10자리 중 오른쪽에 정렬합니다.


가운데 정렬

특정 필드를 문자열의 가운데 정렬하고 싶을 때 ^ 기호를 사용합니다.

# 코드
text = "{:^10}".format("안녕")
print(text)

# 출력
    안녕    

{:^10}안녕을 10자리 중 가운데에 정렬하고, 양쪽에 공백을 추가합니다.


공백 채우기

format 함수를 사용할 때 특정 문자로 공백을 채울 수 있습니다. 이는 정렬 옵션과 함께 사용되어 문자열의 빈 공간을 지정된 문자로 채우는 데 사용됩니다.

# 코드
text = "{:*^10}".format("안녕")
print(text)

# 출력
****안녕****

여기서 {:*^10}는 문자열 안녕을 가운데 정렬하고, 남는 공간을 *로 채웁니다.


소수점 표현하기

숫자 데이터를 문자열로 포맷팅할 때 소수점 아래 자릿수를 지정할 수 있습니다. 이는 부동소수점 수를 문자열로 변환할 때 유용하게 사용됩니다.

# 코드
number = 3.141592
text = "{:.2f}".format(number)
print(text)

# 출력
3.14

{:.2f}는 소수점 아래 두 자리까지만 표현하도록 지정합니다.


{ 중괄호 }를 문자로 표현하기

문자열 포맷팅을 사용할 때 중괄호 {}를 문자로 표현하고 싶을 수 있습니다. 이를 위해서는 중괄호를 이중으로 사용하면 됩니다.

# 코드
text = "{{{0}}}과 {{{1}}}의 차이".format("HTML", "CSS")
print(text)

# 출력
{HTML}{CSS}의 차이

이 예시에서 {{}}는 실제 문자열 내에서 {}로 표현됩니다.


2. f 문자열 포맷팅

f 문자열 포맷팅은 문자열 앞에 f 또는 F를 붙여서 사용하는 방법입니다. 이 방식은 문자열 내에 직접 변수(variable), 리터럴, 표현식을 중괄호 {} 안에 넣어 사용할 수 있어 매우 직관적이고 편리합니다.


기본 사용법

f 문자열 포맷팅의 기본적인 사용 방법은 문자열 앞에 f를 붙이고, 중괄호 안에 직접 변수를 넣는 것입니다.

# 코드
name = "이순신"
age = 47
text = f"제 이름은 {name}이고, 나이는 {age}살입니다."
print(text)

# 출력
제 이름은 이순신이고, 나이는 47살입니다.

여기서 {name}{age}는 각각 nameage 변수의 값으로 대체됩니다.


변수와 표현식 사용

f 문자열 포맷팅에서는 중괄호 {} 안에 변수 뿐만 아니라 표현식(expression)도 사용할 수 있습니다. 이는 코드를 더 간결하게 만들어줍니다.

# 코드
hours = 6
minutes = hours * 60
text = f"{hours}시간은 {minutes}분과 같습니다."
print(text)

# 출력
6시간은 360분과 같습니다.

이 예에서 {minutes}hours * 60이라는 표현식의 결과값으로 대체되어 출력됩니다.


정렬과 공백 채우기

f 문자열 포맷팅을 사용하여 문자열 내에서 값의 정렬 및 공백을 조절할 수 있습니다. 이는 format 함수에서 사용하는 방식과 유사합니다.

# 코드
name = "강감찬"
left_aligned = f"{name:<10}"  # 왼쪽 정렬
right_aligned = f"{name:>10}"  # 오른쪽 정렬
center_aligned = f"{name:^10}"  # 가운데 정렬
filled = f"{name:*^10}"  # 가운데 정렬 및 '*'로 공백 채우기

print(left_aligned)
print(right_aligned)
print(center_aligned)
print(filled)

# 출력
강감찬      
      강감찬
   강감찬   
***강감찬***

각각의 정렬 방식과 공백 채우기 옵션이 문자열에 어떻게 적용되는지 확인할 수 있습니다.


소수점 표현하기

f 문자열 포맷팅을 이용하여 소수점 아래의 정확도를 지정할 수 있습니다. 이는 숫자 데이터를 보다 세밀하게 제어하는 데 유용합니다.

# 코드
number = 7.12345
formatted_number = f"{number:.2f}"

print(formatted_number)

# 출력
7.12

여기서 :.2f는 소수점 아래 두 자리까지만 출력하도록 지정합니다.


{ 중괄호 }를 문자로 표현하기

f 문자열 포맷팅에서 중괄호 {}를 문자로 표현하고 싶을 때는 이중 중괄호 {{ 또는 }}를 사용합니다.

# 코드
text = f"{{Python}}은 {2024}년에도 인기 있는 언어일 것입니다."

print(text)

# 출력
{Python}2024년에도 인기 있는 언어일 것입니다.

이 코드에서 {{}}는 실제 문자열에서 {}로 출력됩니다.

Q & A

Q: f 문자열 포맷팅과 format 함수 중 어느 것을 사용해야 하나요?

A: 선택은 주로 사용 중인 파이썬 버전과 필요한 포맷팅의 복잡성에 따라 달라집니다. 간결한 코드를 선호하고 Python 3.6 이상을 사용한다면 f 문자열 포맷팅을 추천합니다. 반면, 보다 복잡한 포맷팅이 필요하거나 이전 버전의 파이썬을 사용한다면 format 함수를 사용하는 것이 좋습니다.

Q: f 문자열 포맷팅과 format 함수 중 어느 것이 성능 면에서 더 우수한가요?

A: 일반적으로 f 문자열 포맷팅은 format 함수보다 약간 더 빠릅니다. 이는 f 문자열 포맷팅이 컴파일 시간에 문자열을 처리하기 때문입니다. 그러나 이 성능 차이는 대부분의 일상적인 사용에서는 크게 중요하지 않을 수 있습니다.

Q: 실제 프로젝트에서 문자열 포맷팅은 어떻게 활용되나요?

A: 문자열 포맷팅은 로그 메시지 작성, 사용자 인터페이스 문자열 조정, 데이터 보고서 포맷팅 등 다양한 상황에서 활용됩니다. 특히, 데이터를 명확하고 읽기 쉬운 형식으로 표시해야 하는 경우에 유용합니다. 예를 들어, 사용자에게 날짜, 시간, 숫자 등을 보여주거나, 파일에서 데이터를 읽어와서 특정 형식으로 출력하는 등의 작업에 사용됩니다.

profile
데이터 분석 공부중:)

2개의 댓글

comment-user-thumbnail
2024년 1월 16일

정리가 너무 잘되어있어서 다른 언어를 하는데도 이해가 쉽고 흥미가 생겨요 유익한 포스트 감사합니다!

1개의 답글