Python

[파이썬] f 문자열 | f string

pyflu 2023. 9. 28. 12:21

f 문자열 - [파이썬/python]

 

f 문자열파이썬에서 문자열 포맷팅을 편리하게 수행하기 위한 기능입니다.
"f" 문자열을 사용하면 문자열 안에 변수 값을 삽입하거나 표현식을 계산하여 문자열을 생성할 수 있습니다. 이것은 파이썬 3.6 버전부터 지원되며, 문자열 내에서 중괄호 {} 안에 변수나 표현식을 넣어 사용합니다.


1. 기본 사용법

  • 중괄호 {} 안에 변수를 넣고 문자열 앞에 "f"를 붙입니다.
  • 중괄호 안에 있는 내용은 변수 값의 결과로 대체됩니다.
name = "Alice"
age = 25

# f 문자열을 사용한 문자열 포맷팅
formatted_string = f"I have {name} and I am {age} years old"
print(formatted_string)
# 출력: I have Alice and I am 25 years old
name = "Alice"
age = 25

# f 문자열을 사용한 문자열 포맷팅
formatted_string = f"I have {name} and I am {age} years old"
print(formatted_string)
# 출력: I have Alice and I am 25 years old

2. 표현식 사용

  • 중괄호 {} 안에 변수와 표현식을 넣고 문자열 앞에 "f"를 붙입니다.
  • 중괄호 안에 있는 내용은 표현식의 결과로 대체됩니다.
x = 6
y = 3

# 변수와 표현식을 f 문자열 내에서 사용
# 덧셈
result = f"{x} + {y} + 30 = {x + y + 30}"
print(result) # 출력: 6 + 3 + 30 = 39

# 제곱
result = f"{x} ** {y} = {x ** y}"
print(result) # 출력: 6 ** 3 = 216

# 나누기
result = f"{x} // {y} = {x // y}"
print(result) # 출력: 6 // 3 = 2

# AND연산
result = f"{x} & {y} = {x & y}"
print(result) # 출력: 6 & 3 = 2

# OR연산
result = f"{x} | {y} = {x | y}"
print(result) # 출력: 6 | 3 = 7

# 조건연산
result = f"{x} == {y} = {x == y}"
print(result) # 출력: 6 == 3 = False
x = 6
y = 3

# 변수와 표현식을 f 문자열 내에서 사용
# 덧셈
result = f"{x} + {y} + 30 = {x + y + 30}"
print(result) # 출력: 6 + 3 + 30 = 39

# 제곱
result = f"{x} ** {y} = {x ** y}"
print(result) # 출력: 6 ** 3 = 216

# 나누기
result = f"{x} // {y} = {x // y}"
print(result) # 출력: 6 // 3 = 2

# AND연산
result = f"{x} & {y} = {x & y}"
print(result) # 출력: 6 & 3 = 2

# OR연산
result = f"{x} | {y} = {x | y}"
print(result) # 출력: 6 | 3 = 7

# 조건연산
result = f"{x} == {y} = {x == y}"
print(result) # 출력: 6 == 3 = False

3. 소수점 표현

  • 중괄호 안에 콜론 :을 사용하여 형식을 지정할 수 있습니다.
pi = 3.14159265359

# 소수점 2자리까지 표시
formatted_pi = f"Pi = {pi:.2f}"
print(formatted_pi)
# 출력: Pi = 3.14
pi = 3.14159265359

# 소수점 2자리까지 표시
formatted_pi = f"Pi = {pi:.2f}"
print(formatted_pi)
# 출력: Pi = 3.14

4. 딕셔너리 키 사용

  • 딕셔너리의 키를 중괄호 안에 사용하여 값을 추출할 수 있습니다.
person = {"name": "Bob", "age": 25}

# 딕셔너리의 키를 사용하여 값 추출
formatted_info = f"Name: {person['name']}, Age: {person['age']}"
print(formatted_info)
# 출력: Name: Bob, Age: 25
person = {"name": "Bob", "age": 25}

# 딕셔너리의 키를 사용하여 값 추출
formatted_info = f"Name: {person['name']}, Age: {person['age']}"
print(formatted_info)
# 출력: Name: Bob, Age: 25

5. 함수 호출

  • 함수를 호출하고 그 결과를 문자열에 포함할 수 있습니다.
def double(x):
    return 2 * x

value = 5

# 함수 호출 결과를 f 문자열에 삽입
formatted_result = f"Double of {value} is {double(value)}"
print(formatted_result)
# 출력: Double of 5 is 10
def double(x):
    return 2 * x

value = 5

# 함수 호출 결과를 f 문자열에 삽입
formatted_result = f"Double of {value} is {double(value)}"
print(formatted_result)
# 출력: Double of 5 is 10

7. 공백 채우기

  • 기본적으로 문자열은 왼쪽 정렬됩니다.
  • 공백 채우기 ({변수:길이})
    • 중괄호 안에 변수 뒤에 콜론을 붙이고, 그 뒤에 공백으로 채울 길이를 지정할 수 있습니다.
name = "Ace"

# 10자리를 채우고 왼쪽 정렬
formatted_string = f"{name:10}"
print(formatted_string)  # 출력: "Ace       "
name = "Ace"

# 10자리를 채우고 왼쪽 정렬
formatted_string = f"{name:10}"
print(formatted_string)  # 출력: "Ace       "
  • 오른쪽 정렬 ({변수:>길이})
    • 변수와 길이 사이에 > 기호를 넣어 오른쪽 정렬할 수 있습니다.
name = "Ace"

# 10자리를 채우고 오른쪽 정렬
formatted_string = f"{name:>10}"
print(formatted_string)  # 출력: "       Ace"
name = "Ace"

# 10자리를 채우고 오른쪽 정렬
formatted_string = f"{name:>10}"
print(formatted_string)  # 출력: "       Ace"
  • 가운데 정렬 ({변수:^길이})
    • 변수와 길이 사이에 ^ 기호를 넣어 가운데 정렬할 수 있습니다.
name = "Ace"

# 10자리를 채우고 가운데 정렬
formatted_string = f"{name:^10}"
print(formatted_string)  # 출력: "   Ace   "
name = "Ace"

# 10자리를 채우고 가운데 정렬
formatted_string = f"{name:^10}"
print(formatted_string)  # 출력: "   Ace   "
  • 공백 대신 다른 문자로 채우기 ({변수:길이<문자})
    • 공백 대신 다른 문자를 채우려면 변수와 길이 사이에 사용할 문자를 넣을 수 있습니다.
name = "Ace"

# 10자리를 채우고 '-' 문자로 채우기
formatted_string = f"{name:-^10}"
print(formatted_string)  # 출력: "---Ace----"
name = "Ace"

# 10자리를 채우고 '-' 문자로 채우기
formatted_string = f"{name:-^10}"
print(formatted_string)  # 출력: "---Ace----"

위와 같이 f 문자열을 사용하면 문자열 포맷팅이 훨씬 더 간편해집니다.

변수 값을 문자열에 삽입하거나 계산 결과를 문자열로 포맷팅할 때 매우 유용합니다.

 

하지만 f 문자열을 사용할 때 몇 가지 주의사항이 있습니다


1. 변수 및 표현식 유효성 검사/ 형식 지정 오류

  • 중괄호 내부의 변수나 표현식은 반드시 유효하고 정의되어야 합니다.
  • 사용하지 않은 변수나 잘못된 표현식은 오류를 발생시킬 수 있습니다.
  • 중괄호 안에 형식 지정 문자열을 잘못 사용하면 오류가 발생할 수 있습니다.
  • 올바른 형식 지정 문자열을 사용하도록 주의해야 합니다.
# 존재하지 않는 변수 사용 예시 (NameError 발생)
name = "Alice"
formatted_string = f"My name is {naem}"

# 잘못된 형식 지정 문자열 사용 예시 (ValueError 발생)
x = 10
formatted_string = f"The value is {x:05d}"
# 존재하지 않는 변수 사용 예시 (NameError 발생)
name = "Alice"
formatted_string = f"My name is {naem}"
 
# 잘못된 형식 지정 문자열 사용 예시 (ValueError 발생)
x = 10
formatted_string = f"The value is {x:05d}"

2. 중괄호 안에서 중괄호 사용

  • 중괄호 안에서 중괄호를 중첩해서 사용하려면 두 번 중괄호를 사용하여 이스케이프해야 합니다.
# 중첩 중괄호 사용
value = 42
formatted_string = f"Value: {{value}}"
print(formatted_string)
# 출력: Value: {value}
# 중첩 중괄호 사용
value = 42
formatted_string = f"Value: {{value}}"
print(formatted_string)
# 출력: Value: {value}

3. 보안 주의

  • f 문자열을 사용할 때 사용자 입력과 함께 사용하는 경우 주의해야 합니다.
  • 사용자 입력을 직접 f 문자열에 삽입하면 보안 취약점으로 이어질 수 있습니다.
  • 이런 경우에는 반드시 사용자 입력을 적절히 검증하고 이스케이프해야 합니다.

프로그램을 개발할 때 "f 문자열"을 사용하는 것은 안전하게 처리될 경우에는 좋은 방법입니다. 

728x90

'Python' 카테고리의 다른 글

[파이썬] islower | isupper  (32) 2023.09.28
[파이썬] title | capitalize  (38) 2023.09.28
[파이썬] swapcase  (50) 2023.09.28
[파이썬] count  (49) 2023.09.28
[파이썬] 딕셔너리 | dict  (34) 2023.09.28