문자열 포매팅하기
이 단계에서는 파이썬에서 문자열을 포매팅하는 현대적이고 효과적인 방법을 학습합니다. 이는 변수와 표현식을 문자열 내에 삽입하여 동적이고 읽기 쉬운 출력을 생성하는 데 중요합니다.
+ 연산자를 사용하여 문자열을 연결할 수 있지만, 숫자와 같은 문자열이 아닌 유형과 혼합할 때는 str()을 사용하여 수동으로 변환해야 하므로 번거로울 수 있습니다.
파이썬은 더 나은 해결책을 제공합니다. 가장 일반적이고 권장되는 방법은 f-string (포맷된 문자열 리터럴) 을 사용하는 것입니다.
f-string 포매팅
Python 3.6 에서 도입된 f-string 은 표현식을 문자열 내에 삽입하는 간결하고 읽기 쉬운 방법을 제공합니다. 문자열 앞에 f 또는 F를 접두사로 붙이고 중괄호 {} 안에 표현식을 작성하기만 하면 됩니다.
string_formatting.py 파일을 열고 다음 코드를 추가합니다.
## string_formatting.py
name = "Alice"
age = 30
## f-string 을 사용하여 변수 삽입
greeting = f"Hello, my name is {name} and I am {age} years old."
print(greeting)
## 표현식을 직접 삽입할 수도 있습니다
print(f"In 5 years, I will be {age + 5} years old.")
스크립트를 저장하고 실행합니다.
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
f-string 은 또한 중괄호 안의 콜론 (:) 뒤에 오는 포맷 지정자를 사용하여 삽입된 값의 포매팅을 제어할 수 있도록 합니다.
string_formatting.py에 다음 예제를 추가합니다.
## string_formatting.py
## ... (이전 코드) ...
pi = 3.14159265
## float 을 소수점 이하 2 자리로 포맷팅
print(f"The value of pi is approximately {pi:.2f}")
## 숫자를 선행 0 으로 채워 너비 8 로 만들기
order_id = 45
print(f"Order ID: {order_id:08}")
## 주어진 공간 (너비 10) 내에서 텍스트 정렬
## < (왼쪽), ^ (가운데), > (오른쪽)
text = "Python"
print(f"'{text:<10}'")
print(f"'{text:^10}'")
print(f"'{text:>10}'")
## 천 단위 구분 기호로 쉼표 추가
large_number = 1234567890
print(f"A large number: {large_number:,}")
파일을 저장하고 다시 실행합니다.
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
The value of pi is approximately 3.14
Order ID: 00000045
'Python '
' Python '
' Python'
A large number: 1,234,567,890
f-string 이전에는 str.format() 메서드가 문자열 포매팅을 위한 선호되는 방식이었습니다. 이는 문자열에 플레이스홀더 중괄호 {}를 배치한 다음 format() 메서드에 값을 전달하여 작동합니다.
string_formatting.py 끝에 이 예제를 추가합니다.
## string_formatting.py
## ... (이전 코드) ...
## str.format() 메서드 사용
item = "moon"
cost = 99.95
statement = "The {} costs {:.2f} dollars.".format(item, cost)
print(statement)
파일을 저장하고 실행하여 출력을 확인합니다.
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
The value of pi is approximately 3.14
Order ID: 00000045
'Python '
' Python '
' Python'
A large number: 1,234,567,890
The moon costs 99.95 dollars.
str.format()도 여전히 유용하지만, 일반적으로 f-string 이 가독성이 더 좋고 빠릅니다.