Python/Syntax

[Python] 문자열 포맷팅

semperparatus 2022. 4. 20. 10:38

 문자열 포맷팅이란 문자열 안의 특정한 값을 바꿔야 할 경우가 있는데 이것을 가능하게 해 준다. 즉, 쉽게 말해 문자열 포맷팅은 문자열 안에 어떤 값을 삽입하는 방법이다.

 이는 크게 3가지 방법이 있는데 아래와 같다.

  • % 포맷팅
  • format 함수
  • f 문자열 포맷팅

1. % 포맷팅

 % 문자를 이용해 원하는 형식으로 포맷팅할 수 있다. 이는 '% 자료형 종류' % 값 의 형식으로 사용된다.

 

(1) 숫자 바로 대입

>>> print('I ate %d apples' % 3)
'I ate 3 apples'

 이는 숫자를 바로 대입하는 방법이다. 이때, %d를 문자열 포맷 코드라고 부른다.

 

(2) 문자열 바로 대입

>>> print('I ate %s apples.' % 'five')
'I ate five apples'

 이는 문자열을 바로 대입하는 방법이다. 위의 예제와 비교해보면 숫자를 넣기 위해서는 %d를, 문자열을 넣기 위해서는 %s를 써야 한다.

 

(3) 변수 대입

>>> number = 3
>>> print('I ate %d apples.' % number)
'I ate 3 apples'

 이는 변수를 정의하여 대입하는 방법이다.

 

(4) 2개 이상의 값 대입

>>> number = 10
>>> day = 'three'
>>> print('I ate %d apples. so I was sick for %s days.' % (number, day))
'I ate 10 apples. so I was sick for three days'

  이는 2개 이상의 값을 넣는 방법이다. 이처럼 2개 이상의 값을 넣으려면 마지막 % 다음 괄호 안에 콤마(,)로 구분하여 각각의 값을 넣어주면 된다.

 

(5) 소수점 표현

>>> print('%0.4f' % 3.141592)
3.1415

 이는 % 포맷팅을 이용하여 소수점을 표현하는 방법이다. 이는 소수점 아래 4자리까지 표현한다는 의미이다.

 

문자열 포맷 코드

자주 사용하는 문자열 포맷 코드는 아래와 같다.

 

2. format 함수

문자열의 format 함수를 사용하면 조금 더 발전된 스타일로 문자열 포맷을 지정할 수 있다.

 

(1) 숫자 바로 대입

>>> print('I eat {0} apples.'.format(3))
'I eat 3 apples.'

이는 숫자를 바로 대입하는 방법이다. {0}이라는 부분이 숫자 3으로 바뀐 것을 확인할 수 있다.

 

(2) 문자열 바로 대입

>>> print('I eat {0} apples.'.format('five'))
'I eat five apples.'

이는 문자열을 바로 대입하는 방법이다. {0}이라는 부분이 문자열 'five'로 바뀐 것을 확인할 수 있다.

 

(3) 변수 대입

>>> number = 3
>>> print('I eat {0} apples.'.format(number))
'I eat 3 apples.'

이는 변수를 정의하고 이를 대입하는 방법이다.

 

(4) 2개 이상의 값 넣기

>>> number = 10
>>> day = 'three'
>>> print('I ate {0} apples. so I was sick for {1} days'.format(number, day))
'I ate 10 apples. so I was sick for three days.'

2개 이상의 값을 넣을 경우 {0}, {1}, ... 과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀐다.

 

(5) 매개변수를 지정하여 입력

>>> print('I ate {number} apples. so I was sick for {day} days.'.format(number = 10, day = 3))
'I ate 10 apples. so I was sick for 3 days.'

이와 같이 매개변수를 지정하여 입력하면 입력하는 값의 순서를 내 마음대로 바꿀 수 있다는 장점이 있다.

 

(6) 소수점 표현하기

>>> y = 3.141592
>>> print('{0:0.4f}'.format(y))
'3.1415'

format 함수를 사용해 소수점 아래 4자리까지만 표현하는 방법이며, 처음 0:은 0번째 인덱스를 의미한다. 만약 1번째 인덱스를 추가하고 싶다면 1:으로 나타내면 된다.

 

3. f 문자열 포맷팅

파이썬 3.6 버전부터는 f 문자열 포맷팅 기능을 사용할 수 있다. 이는 문자열 앞에 접두사 f를 붙이고, 중괄호 안에 변수를 넣어주면 된다.

 

>>> name = '홍길동'
>>> age = 30
>>> print(f'나의 이름은 {name}입니다. 나이는 {age}입니다.')
'나의 이름은 홍길동입니다. 나이는 30입니다.'

 

소수점 표현은 아래와 같이 할 수 있다.

>>> y = 3.141592
>>> print(f'{y:0.4f}')
'3.1415'

이때, 앞에서 format 함수에서 소수점 표현할 때 인덱스 번호를 0: , 1:로 나타낸 것과 같이 f 문자열 포맷팅에서는 변수 이름 y:를 나타내어 주면 된다.