Python | 서식 지정자, 문자열 포매팅

Sua·2020년 12월 15일
0

Python

목록 보기
3/28
post-thumbnail
post-custom-banner

파이썬에서 문자열 만들기

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

서식 지정자

숫자 바로 대입하기

  • '%d' % 숫자
    d는 decimal integer
"I eat %d apples." % 3 # 'I eat 3 apples.'

문자열 바로 대입하기

  • '%s' % '문자열'
    s는 string
"I eat %s apples." % "five" # 'I eat five apples.'

2개 이상의 값 넣기

  • '%d %s' % (숫자, '문자열')
"I ate %d apples. so I was sick for %s days." % (10, "three") 
# 'I ate 10 apples. so I was sick for three days.'

변수로 대입하기

  • '%d %s' % (변수명1, 변수명2)
number = 10
day = "three"
"I ate %d apples. so I was sick for %s days." % (number, day) 
# 'I ate 10 apples. so I was sick for three days.'

소수점 표현하기

  • '%f' % 숫자
    f는 fixed point
'%f' % 2.3 # '2.300000', 기본으로 소수점 아래 6자리
  • '%.자릿수f' % 숫자

소수점 이하 자릿수를 지정하려면 f 앞에 .(점)과 자릿수를 지정해주면 된다.

'%.2f' % 2.3 # '2.30'

정렬하기

  • %길이s

% 뒤에 숫자를 붙이면 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하고 남는 공간을 공백으로 채운다. 왼쪽 정렬을 하고 싶으면 문자열 길이에 -를 붙여주면 된다.

"%10s" % "hi" # '        hi'
"%-10sjane." % 'hi' # 'hi        jane.'

문자열 포매팅

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

숫자, 문자열 바로 대입하기

  • '{인덱스}'.format(값)
'Hello, {0}'.format('world!') # 'Hello, world!'
'Hello, {0}'.format(100) # 'Hello, 100'

2개 이상의 값 넣기

문자열에는 인덱스 숫자에 해당하는 값이 들어간다. 인덱스를 지정해 순서를 지정하거나 중복 출력할 수 있다.

'Hello, {0} {2} {1}'.format('Python', 'Script', 3.6) # 'Hello, Python 3.6 Script'

만약 { }에서 인덱스를 생략하면 format에 지정한 순서대로 값이 들어간다.

인덱스 대신 이름으로 넣기

'Hello, {language} {version}'.format(language='Python', version=3.6)
# 'Hello, Python 3.6'

정렬하기

  • {인덱스:<길이}'.format(값)

문자열을 지정된 길이로 만든 뒤 정렬하고 남는 공간을 공백으로 채운다.
< 왼쪽 정렬, > 오른쪽 정렬, ^ 가운데 정렬

'{0:<10}'.format('python') # 'python    ', 왼쪽 정렬
'{0:>10}'.format('python') # '    python', 오른쪽 정렬
'{0:^10}'.format('python') # '  python  ', 가운데 정렬

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

공백채우기

  • {인덱스:공백문자<길이}.format(값)
'{0:!^10}'.format('hi') # '!!!!hi!!!!', 가운데 정렬하고 '!' 문자로 공백 채우기

숫자 개수 맞추기

정수와 실수 앞에 0을 넣어서 숫자 개수를 맞추는 방법이다.

  • '%0개수d' % 숫자
    '{인덱스:0개수d}'.format(숫자)
'%03d' % 1 # '001'
'{0:05d}'.format(4885) # '04885'

실수도 숫자 개수를 맞출 수 있다. 실수는 숫자 개수에 정수 부분, 소수점, 소수점 이하 자릿수가 모두 포함된다.

  • '%0개수.자릿수f' % 숫자
    '{인덱스:0개수.자릿수f'}.format(숫자)
'%08.2f' % 3.6 #'00003.60'
'{0:08.2f}'.format(150.37) #'00150.37'

채우기와 정렬 조합해서 사용하기

문자열 포매팅은 채우기와 정렬을 조합해서 사용할 수 있다. 다음과 같이 { }에 인덱스, 채우기, 정렬, 길이, 자릿수, 자료형 순으로 지정해준다.

  • '{인덱스:[[채우기]정렬][길이][.자릿수][자료형]}'
'{0:0<10}'.format(15) # '1500000000', 길이 10, 왼쪽으로 정렬하고 남는 공간은 0으로 채움
'{0:0>10.2f}'.format(15) # '0000015.00', 길이 10, 오른쪽으로 정렬하고 소수점 자릿수는 2자리
'{0: >10}'.format(15) # '        15', 남는 공간을 공백으로 채움
'{0: >10}'.format(15) # '        15', 채우기 부분을 생략하면 공백이 들어감
'{0:x>10}'.format(15) # 'xxxxxxxx15', 남는 공간을 문자 x로 채움

금액에서 천단위로 콤마 넣기

  • format(숫자, ',')
    {인덱스:,}.format(숫자)
format(1493500, ',') # '1,493,500', 내장함수
'%20s' % format(1493500, ',') # 서식 지정자
'{0:,}'.format(1493500) # 포매팅
'{0:>20,}'.format(1493500) # '           1,493,500', 길이 20, 오른쪽으로 정렬

f 문자열 포매팅

파이썬 3.6 버전부터는 f 문자열 포매팅 기능을 사용할 수 있다. f 문자열 포매팅을 사용하면 변수를 그대로 사용할 수 있다.

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

language = 'Python'
version = 3.6
f'Hello, {language} {version}' # 'Hello, Python 3.6'

참고로 { } 문자를 표시하려면 다음과 같이 두 개를 동시에 사용해야 한다.

f'{{ and }}' #'{ and }

표현식 사용하기

f 문자열 포매팅은 표현식을 지원한다. 표현식이란 문자열 안에서 변수와 +, -와 같은 수식을 함께 사용하는 것을 말한다.

age = 30
f'나는 내년이면 {age+1}살이 된다.' 
# '나는 내년이면 31살이 된다.'

딕셔너리 사용하기

딕셔너리는 f 문자열 포매팅에서 다음과 같이 사용할 수 있다.

d = {'name':'홍길동', 'age':30}
f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
# '나의 이름은 홍길동입니다. 나이는 30입니다.'

문자열 포맷 코드

%s 포맷 코드는 어떤 형태의 값이든 변환해 넣을 수 있다.

코드설명
%s문자열(String)
%c문자 1개(character)
%d정수(Integer)
%f부동소수(floating-point)
%o8진수
%x16진수
%%Literal % (문자 % 자체)

포매팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다

"Error is %d%%." % 98 # "Error is %d%%." % 98

본 포스팅은 아래의 사이트를 참고하여 작성되었습니다.
점프투파이썬 https://wikidocs.net/book/1
코딩도장 https://dojang.io/

profile
Leave your comfort zone
post-custom-banner

0개의 댓글