
Formatted String Literals와 str.format() 메서드
포맷 문자열 리터럴. 형식화된 문자열 그대로의 것. 막상 번역을 하려니 이상하여 그냥 Formatted String Literals로 부리기로 한다.
문자열을 나타내는 작은 따옴표 '나 큰 따옴표 " 앞에 문자 f 또는 F를 붙이면, 해당 문자열 내 괄호 {와 } 안에 변수 또는 숫자와 같은 리터럴을 사용할 수 있다.
year = 'year'
this_year = 2021
print(f'this {year} = {this_year}')
print(F'next {year} = {this_year+1}')

str.format() 메서드
아래의 코드는 str 클래스의 format() 메서드를 사용하는 예이다.
format() 메서드를 사용하면 문자열 내 괄호 {와 }는 format() 메서드에 전달하는 인자로 대체된다.
print('{} + {} = {}'.format(2, 3, 2+3))

format() 메서드를 사용함에 있어 문자열 내 괄호 {와 }의 개수가 format() 메서드의 전달인자 개수보다 크면 오류가 발생한다.
print('{} + {} = {} {}'.format(2, 3, 2+3))

하지만 문자열 내 괄호 {와 }의 개수가 format() 메서드의 전달인자 개수보다 작으면 오류는 발생하지 않는다.
print('{} + {} = {}'.format(2, 3, 2+3), 10, 20, 30)
format() 메서드를 사용함에 있어 문자열 내 괄호 {와 } 안에 format() 메서드에 넘겨주는 전달인자의 인덱스 번호를 입력하면 괄호 {와 }은 해당 전달인자의 값으로 대체된다.
print('{1} {2} {0}'.format(1, 2, 3))

format() 메서드에는 키워드=값 형식의 전달인자 정의도 가능하다.
print('{0} {1} {three}'.format(1, 2, three=3))

format() 메서드에는 딕셔너리 데이터도 전달인자로 사용할 수 있다.
fruits = {'apple': 20, 'grape': 5, 'banana': 15}
print('{0[grape]:d} {0[banana]:d} {0[apple]:d}'.format(fruits))
print('{grape} {banana} {apple}'.format(**fruits))

문자열 내 괄호 {와 } 안에 콜론(:)을 이용해 추가적인 형식 정의가 가능하다.
아래의 코드는 임의 정수 값을 기본 3자리의 10진수와 16진수로 표현하는 코드이다.
for n in range(1, 11):
print('{0:3d} {0:3X}'.format(n))

위의 코드에서 출력되는 숫자의 값을 왼쪽으로 정렬하고자 한다면, 문자 <을 추가한다. 문자 ^는 가운데 정렬을 의미한다.
for n in range(1, 11):
print('{0:<3d} {0:^3X}'.format(n))

format() 메서드를 사용함에 있어 다음의 코딩 방식은 코드의 가독성을 높일 수도 있을 것이다.
print('{0}'
'{1}'
'{2}'.format(1,
2,
3))
'코딩 > 파이썬 기초' 카테고리의 다른 글
| 파이썬 튜토리얼 037. 텍스트 파일 읽기 (0) | 2021.08.04 |
|---|---|
| 파이썬 튜토리얼 036. 텍스트 파일 쓰기 (0) | 2021.08.03 |
| 파이썬 튜토리얼 034. 파이썬 모듈 import (0) | 2021.08.01 |
| 파이썬 튜토리얼 033. 시퀀스 타입 데이터의 비교 (0) | 2021.07.28 |
| 파이썬 튜토리얼 032. for 문에서 내장 함수 enumerate() 사용 (0) | 2021.07.24 |