TIL 27 | python, 문자열 서식 지정자, 포매팅 사용하기

ryan·2020년 8월 9일
0

Python

목록 보기
15/18

파이썬은 다양한 방법으로 문자열을 만들 수 있는데, 이번에는 서식 지정자(format specifier)로 문자열을 만드는 방법과 format 메서드로 문자열을 만드는 문자열 포매팅(string formatting)에 대해서 알아보자

서식 지정자로 문자열 넣기

  • '%s' % '문자열
    s: string
>>> 'I am %s.' % 'ryan'
'I am ryan.'

문자열을 바로 지정하지 않고, 변수를 지정할 수도 있다.

>>> 'I am %s.' % name
'I am ryan.'

서식 지정자로 숫자 넣기

  • '%d' % 숫자
    d: decimal integer
>>> 'I was born in %d.' % 1989
'I was born in 1989.'

서식 지정자로 소수점 표현하기

  • '%f' % 숫자
    f: fixed point
>>> '%f' % 3.3
'3.300000'		# 기본적으로 소수점 이하 6자리까지 표시
  • '%.자릿수f' % 3.3
    소수점 이하 자릿수를 지정하려면 f 앞에 .(점)과 자릿수를 지정해주면 된다.
>>> '%.2f' % 3.3		# 소수점 이하 2자리까지 표시
'3.30'
>>> '%.3f' % 3.3		# 소수점 이하 3자리까지 표시
'3.300'

서식 지정자로 문자열 정렬하기

  • %길이s
    % 뒤에 숫자를 붙이면 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하고 남는 공간을 공백으로 채운다.
>>> '%8s' % 'jeju'
'    jeju'

왼쪽 정렬을 하고 싶으면 문자열 길이에 -를 붙여주면 된다.

>>> '%-8s' % 'jeju'
'jeju    '

서식 지정자로 문자열 안에 값 여러 개 넣기

  • '%d %s' % (숫자, '문자열')
>>> 'I met you at %d %s.' % (10, 'last night')
'I met you at 10 last night.'

서식 지정자가 여러 개면 괄호 안의 값(변수)개수도 서식 지정자 개수와 똑같이 맞춰주어야 한다.

format 메서드를 사용해보자

파이썬은 문자열을 만들 때 서식 지정자 방식보다 더 간단한 문자열 포매팅(string formatting)을 제공한다. 문자열 포매팅은 { }(중괄호) 안에 포매팅을 지정하고 format 메서드로 값을 넣는다.

  • '{인덱스}'.format(값)
>>> 'Hello, {0}'.format('Jeju!')
'Hello, Jeju!'
>>> 'Hello, {0} This is Sparta!'.format('300!')
'Hello, 300! This is Sparta!'

format 메서드로 값을 여러 개 넣기

'Hello, {0} {2} {1}'.format('Sparta', 'won', 300)
'Hello, Sparta 300 won'

{ }에 인덱스를 지정한 뒤 format에는 인덱스가 증가하는 순서대로 값을 넣으면 된다.

format 메서드로 같은 값을 여러 개 넣어보자

'{0} {0} {1} {1}'.format('This is', 'Sparta!')
'This is This is Sparta! Sparta!'

format 메서드에서 인덱스를 생략해보자

>>> 'Hello, {} {} {}'.format(300, 'and', 'Harry')
'Hello, 300 and Harry'

format 메서드에서 인덱스 대신 이름을 지정해보자

>>> 'Hello, {language} {version}'.format(language='Python', version=3.8)
'Hello, Python 3.8'

문자열 포매팅에 변수를 그대로 사용해보자

변수에 값을 넣고 { }에 변수 이름을 지정하면 된다. 이때는 문자열 앞에 포매팅(formatting)이라는 뜻으로 f를 붙인다.

>>> f'Hello, {language} {version}'
'Hello, Python 3.8'

참고로 중괄로 자체를 출력하려면 {{,}}처럼 중괄호를 두 번 사용하면 된다.

>>> '{{ {0} }}'.format('Django')
'{ Django }'

format 메서드로 문자열을 정렬해보자

  • '{인덱스:<길이}'.format(값)
    '{0:<10}'은 부등호 방향이 왼쪽을 가리키고 있는데, 문자열을 지정된 길이로 만든 뒤 왼쪽으로 정렬하고 남는 공간을 공백으로 채운다.
>>> '{0:<8}'.format('Jeju')
'Jeju    '
  • '{인덱스:>길이}'.format(값)
    '{0:>10}'은 부등호 방향이 오른쪽을 가리킨다. 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하고 남는 공간을 공백으로 채운다.
>>> '{0:>10}'.format('Jeju')
'      Jeju'

참고로 인덱스를 사용하지 않는다면 :(콜론)과 정렬 방법만 지정해도 된다.

>>> '{:>8}'.format('Seoul')
'   Seoul'

숫자 개수를 맞춰보자

  • '%0개수d' % 숫자
  • '{인덱스:0개수d}'.format(숫자)
>>> '%03d' % 7
'007'

>>> '{0:05d}'.format(4885)
'04885'

실수도 숫자 개수를 맞출 수 있다. 소수점 이하 자릿수를 지정하고 싶으면 %08.2f처럼 .(점) 뒤에 자릿수를 지정해주자.

  • '%0개수.자릿수f' % 숫자
  • '{인덱스:0개수.자릿수f}'.format(숫자)
>>> '%08.2f' % 3.3
'00003.30'

>>> '{0:010.4f}'.format(33.1)
'00033.1000'

주의할 점은 실수는 숫자 개수에 정수 부분, 소수점, 소수점 이하 자릿수가 모두 포함된다는 것이다. 따라서 '00033' 5개, '.' 1개. '1000' 4개 총 10개다.

채우기와 정렬을 조합해서 사용해보자

문자열 포매팅은 채우기와 정렬릉ㄹ 조합해서 사용할 수 있다.

  • '{인덱스:[[채우기]정렬][길이][.자릿수][자료형]}'

길이를 10으로 만든 뒤 왼쪽, 오른쪽으로 정렬하고 남는 공간은 0으로 채워보자

>>> '{0:0<10}'.format(35)
'3500000000'

>>> '{0:0>10}'.format(35)
'0000000035'

실수로 만들고 싶다면 다음과 같이 소수점 자릿수와 실수 자료형 f를 지정해주면 된다.

>>> '{0:0>10.3f}'.format(35)
'000035.000'

채우기 부분에 0이 아닌 다른 문자를 넣어도 된다. 공백을 넣어도 되고, 문자를 넣어도 된다. 만약 채우기 부분을 생략하면 공백이 들어간다.

>>> '{0: >10}'.format(35)
'        35'

>>> '{0:>10}'.format(35)
'        35'

>>> '{0:x>10}'.format(35)
'xxxxxxxx35'

문자열 메서드와 서식 지정자, 문자열 포매팅은 필요한 부분만 익혀서 사용하면 된다.

참고로 숫자 중에서 금액은 천단위로 ,(콤마)를 넣고 싶으면 format 내장 함수를 사용하면 된다.

  • format(숫자, ',')
>>> format(13425334434494, ',')
'13,425,334,434,494'
profile
👨🏻‍💻☕️ 🎹🎵 🐰🎶 🛫📷

0개의 댓글