프로그래밍/파이썬

파이썬(python), f 문자열 기초와 활용 예제

dang_dang 2025. 3. 15. 10:42
728x90

f-문자열(f-string)은 문자열 포맷팅을 위한 강력하고 직관적인 방법입니다.

f-문자열은 f 또는 F 접두사와 중괄호 {}를 사용하여 파이썬 표현식을 포함할 수 있는 문자열 리터럴입니다.

 

f-문자열의 장점

  • 간결하고 직관적인 문법
  • 빠른 실행 속도
  • 변수와 표현식을 문자열 안에 직접 포함 가능
  • 다양한 포맷팅 옵션 제공

 

  1. 기본 문법
  2. 날짜 및 시간 포맷팅 (각종 날짜/시간 형식)
  3. 숫자 포맷팅 (천 단위 구분자, 소수점 제어)
  4. 문자열 정렬 및 채우기 (왼쪽/오른쪽/중앙 정렬)
  5. 표현식 및 디버깅 기능
  6. 고급 포맷팅 옵션 (진수 변환, 부호 표시 등)
  7. 중첩 표현식
  8. 딕셔너리 및 객체와 함께 사용
  9. 멀티라인 f-문자열
  10. 컬렉션과 함께 사용

 

1. 기본 문법

name = "파이썬"
print(f"안녕하세요, {name}!")  # 안녕하세요, 파이썬!

2. 날짜 및 시간 포맷팅

from datetime import datetime

now = datetime.now()
print(now)  # 2025-01-18 21:33:43.260997

# 연도 포맷팅
print(f'{now:%y.%m.%d}')  # 25.01.18 (두 자리 연도)
print(f'{now:%Y.%m.%d}')  # 2025.01.18 (네 자리 연도)

# 날짜 포맷팅
print(f'{now:%D}')  # 01/18/25 (미국식 날짜 형식 MM/DD/YY)

# 시간 포맷팅
print(f'{now:%H:%M:%S}')  # 21:33:43 (24시간 형식)
print(f'{now:%I %p}')  # 09 PM (12시간 형식 + AM/PM)

# 전체 날짜 및 시간
print(f'{now:%c}')  # Sat Jan 18 21:33:43 2025 (로케일 설정 기반 표시)

3. 숫자 포맷팅

정수 포맷팅

n = 1000000000

# 숫자 구분자
print(f'{n:_}')  # 1_000_000_000 (언더스코어로 자릿수 구분)
print(f'{n:,}')  # 1,000,000,000 (콤마로 자릿수 구분)

실수 포맷팅

n = 1234.567890123
print(n)  # 1234.567890123

# 소수점 자릿수 제한
print(f'{n:.2f}')  # 1234.57 (소수점 두 자리까지 표시)
print(f'{n:.0f}')  # 1235 (소수점 없이 반올림)

# 숫자 구분자와 소수점 자릿수 조합
print(f'{n:,.3f}')  # 1,234.568 (콤마 구분자 + 소수점 3자리)
print(f'{n:_.3f}')  # 1_234.568 (언더스코어 구분자 + 소수점 3자리)

4. 문자열 정렬 및 채우기

v = 'var'

# 오른쪽 정렬 (기본 공백)
print(f'{v:>20}:')  # '                 var:'

# 왼쪽 정렬 (기본 공백)
print(f'{v:<20}:')  # 'var                 :'

# 오른쪽 정렬 + 언더스코어 채우기
print(f'{v:_>20}:')  # '_________________var:'

# 왼쪽 정렬 + 별표 채우기
print(f'{v:*<20}:')  # 'var*****************:'

# 중앙 정렬 + 파이프 채우기
print(f'{v:|^20}:')  # '||||||||var|||||||||:'

5. 표현식 및 디버깅

a = 10
b = 5

# 표현식 계산
print(f'a + b = {a+b}')  # a + b = 15

# 디버깅 표현식 (Python 3.8+)
print(f'{a + b = }')  # a + b = 15
print(f'{a+b=}')  # a+b=15

# 함수 호출
print(f'{bool(a) = }')  # bool(a) = True

# 문자열 값 표시
v = 'Hello, world!'
print(f'{v = }')  # v = 'Hello, world!'

6. 고급 포맷팅 옵션

진수 변환

n = 42
print(f'{n:b}')  # 101010 (2진수)
print(f'{n:o}')  # 52 (8진수)
print(f'{n:x}')  # 2a (16진수 소문자)
print(f'{n:X}')  # 2A (16진수 대문자)

접두어 표시

n = 42
print(f'{n:#b}')  # 0b101010 (2진수 접두어)
print(f'{n:#o}')  # 0o52 (8진수 접두어)
print(f'{n:#x}')  # 0x2a (16진수 접두어)

양수 기호 표시

n = 42
print(f'{n:+}')  # +42 (항상 기호 표시)
print(f'{n: }')  # ' 42' (양수는 공백, 음수는 - 기호)

너비 지정 및 제로 패딩

n = 42
print(f'{n:5d}')   # '   42' (5자리, 오른쪽 정렬)
print(f'{n:05d}')  # '00042' (5자리, 0으로 채우기)

7. 중첩 표현식

width = 10
precision = 2
value = 12.3456

# 변수를 사용하여 포맷 지정
print(f'{value:{width}.{precision}f}')  # '     12.35'

8. 딕셔너리 및 객체와 함께 사용

person = {'name': '홍길동', 'age': 30}
print(f"{person['name']}님은 {person['age']}세입니다.")  # 홍길동님은 30세입니다.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person('김철수', 25)
print(f"{p.name}님은 {p.age}세입니다.")  # 김철수님은 25세입니다.

9. 멀티라인 f-문자열

name = "파이썬"
version = 3.11
features = ["비동기 처리", "타입 힌트", "고성능"]

info = f"""
프로그래밍 언어: {name}
버전: {version}
주요 기능:
{', '.join(features)}
"""
print(info)
# 결과:
# 프로그래밍 언어: 파이썬
# 버전: 3.11
# 주요 기능:
# 비동기 처리, 타입 힌트, 고성능

10. 컬렉션과 함께 사용

fruits = ['사과', '바나나', '오렌지']
print(f"과일 목록: {', '.join(fruits)}")  # 과일 목록: 사과, 바나나, 오렌지

# 리스트 컴프리헨션
numbers = [1, 2, 3, 4, 5]
print(f"제곱: {[x**2 for x in numbers]}")  # 제곱: [1, 4, 9, 16, 25]

 

728x90