파이썬은 다양한 방법으로 문자열을 만들 수 있는데, 서식 지정자(format specifier)로 문자열을 만드는 방법과 format 메서드로 문자열을 만드는 문자열 포매팅(string formatting)이 있다.
"I eat %d apples." % 3 # 'I eat 3 apples.'
"I eat %s apples." % "five" # 'I eat five apples.'
"I ate %d apples. so I was sick for %s days." % (10, "three")
# 'I ate 10 apples. so I was sick for three days.'
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' % 2.3 # '2.300000', 기본으로 소수점 아래 6자리
소수점 이하 자릿수를 지정하려면 f 앞에 .(점)과 자릿수를 지정해주면 된다.
'%.2f' % 2.3 # '2.30'
% 뒤에 숫자를 붙이면 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하고 남는 공간을 공백으로 채운다. 왼쪽 정렬을 하고 싶으면 문자열 길이에 -를 붙여주면 된다.
"%10s" % "hi" # ' hi'
"%-10sjane." % 'hi' # 'hi jane.'
파이썬은 문자열을 만들 때 서식 지정자 방식보다 더 간단한 문자열 포매팅(string formatting)을 제공한다. 문자열 포매팅은 { }(중괄호) 안에 포매팅을 지정하고 format 메서드로 값을 넣는다.
'Hello, {0}'.format('world!') # 'Hello, world!'
'Hello, {0}'.format(100) # 'Hello, 100'
문자열에는 인덱스 숫자에 해당하는 값이 들어간다. 인덱스를 지정해 순서를 지정하거나 중복 출력할 수 있다.
'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'
문자열을 지정된 길이로 만든 뒤 정렬하고 남는 공간을 공백으로 채운다.
< 왼쪽 정렬, > 오른쪽 정렬, ^ 가운데 정렬
'{0:<10}'.format('python') # 'python ', 왼쪽 정렬
'{0:>10}'.format('python') # ' python', 오른쪽 정렬
'{0:^10}'.format('python') # ' python ', 가운데 정렬
인덱스를 사용하지 않는다면 :(콜론)과 정렬 방법만 지정해도 된다.
'{0:!^10}'.format('hi') # '!!!!hi!!!!', 가운데 정렬하고 '!' 문자로 공백 채우기
정수와 실수 앞에 0을 넣어서 숫자 개수를 맞추는 방법이다.
'%03d' % 1 # '001'
'{0:05d}'.format(4885) # '04885'
실수도 숫자 개수를 맞출 수 있다. 실수는 숫자 개수에 정수 부분, 소수점, 소수점 이하 자릿수가 모두 포함된다.
'%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(1493500, ',') # '1,493,500', 내장함수
'%20s' % format(1493500, ',') # 서식 지정자
'{0:,}'.format(1493500) # 포매팅
'{0:>20,}'.format(1493500) # ' 1,493,500', 길이 20, 오른쪽으로 정렬
파이썬 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) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 % 자체) |
포매팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다
"Error is %d%%." % 98 # "Error is %d%%." % 98
본 포스팅은 아래의 사이트를 참고하여 작성되었습니다.
점프투파이썬 https://wikidocs.net/book/1
코딩도장 https://dojang.io/