안녕하세요. BlockDMask 입니다.
파이썬에서 문자열 포매팅 방법은 %와 서식기호를 이용한 방법, format 함수를 이용한 방법, f-string을 이용한 방법 이렇게 세가지가 있다고 볼 수 있습니다.
오늘은 파이썬 포매팅, 문자열 출력 방법 중에 format 함수를 이용한 방법에 대해서 알아보려고 합니다.
다른 두가지 방법은 아래 링크 타고 가시면 다른 포스팅이 존재합니다.
%와 서식 기호를 이용한 방법 [바로가기]
f-string을 이용한 방법 [바로가기]
그럼 파이썬 내장함수 format에 대한 포스팅을 시작해보겠습니다.
<목차>
1. format 함수란?
2. format 함수 예제1 (기본)
3. format 함수 예제2 (응용)
4. format 을 이용해서 구구단 프로그램 출력 해보기
1. 파이썬 format 함수에 대해서
▶ 포메팅 이란?
format 함수에 대해서 알기 전에 우린 문자열 포매팅이 뭔지 부터 알아야합니다.
문자열 포매팅이란 문자열을 이쁘게 만드는 방법을 이야기합니다.
좀 더 풀어서 이야기 해보자면 문자열 중간 중간에 특정 변수의 값을 넣어주기 위해서 사용하는 것 입니다.
예를 들어 우리가 구구단 프로그램을 만들다 보면
print('2 x 3 = 6') 이런식으로 노가다성으로 문자열을 만들지 않잖아요.
2도 변수, 1도 변수, 결과값인 6도 변수로 사용되고 있을텐데, 이런 형태의 문자열을 포매팅 해서 문자열을 이쁘게 재사용하도록 하는것 입니다.
곧 배우겠지만 format 함수를 사용하면 이렇게 되겠죠?
(a, b가 변수라고 쳤을 때)
print('{0} x {1} = 6'.format(a, b, a * b)) 이렇게 말이죠
▶ format 함수 사용법
format 함수는 중괄호 {, } 안에 포매팅을 지정하고 format 함수의 인자로 값들을 넣습니다.
아래를 보면 한번에 느낌이 오실겁니다.
'{인덱스0}, {인덱스1}'.format(값0, 값1)
실제로 한번 볼까요? 구구단을 예로 들어보겠습니다.
1 2 3 4 5 | a = 2 b = 3 s = '구구단 {0} x {1} = {2}'.format(a, b, a * b) print(s) | cs |
문자열 '구구단 {0} x {1} = {2}' 를 보면 중괄호를 이용해서 format 함수에서 넣어줄 것들을 표기 해줍니다.
인덱스는 0 부터 시작합니다. 이렇게 표시를 해주고 .format 함수의 인자로 순서대로 넣을 변수들을 지정해 줍니다.
이해가 잘 가셨나요? 아직 이해가 안갔다면 한번 그림으로 표현 해 보겠습니다.
이렇게 순서대로 가리키게 됩니다.
그럼 숫자를 바꿔보면 어떨까요?
괄호에 아무것도 안넣어도 될까요?
그것은 아래 예제에서 한번 이야기해보겠습니다.
2. 파이썬 문자열 format 함수 예제 (기본)
▶ 2-1 : 직접 대입, 변수로 대입, 이름으로 대입
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 직접 대입하기 s1 = 'name : {0}'.format('BlockDMask') print(s1) # 변수로 대입 하기 age = 55 s2 = 'age : {0}'.format(age) print(s2) # 이름으로 대입하기 s3 = 'number : {num}, gender : {gen}'.format(num=1234, gen='남') print(s3) | cs |
결과
이렇게 format 함수의 인자로 직접 값을 입력하거나, 변수를 입력하거나, 직접 이름을 지어줘도 됩니다.
참 유용하지 않나요?
▶ 2-2 : format 문자열의 중괄호의 인덱스 가지고 놀기
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 인덱스를 입력하지 않으면? s4 = 'name : {}, city : {}'.format('BlockDMask', 'seoul') print(s4) # 인덱스 순서가 바뀌면? s5 = 'song1 : {1}, song2 : {0}'.format('nunu nana', 'ice cream') print(s5) # 인덱스를 중복해서 입력하면? s6 = 'test1 : {0}, test2 : {1}, test3 : {0}'.format('인덱스0','인덱스1') print(s6) | cs |
결과
결과 창을 보셨듯
s4 : 인덱스를 입력하지 않으면 format 인자 순서대로 들어갑니다.
s5 : 인덱스 순서가 바뀌어도 인덱스 번호가 있기 때문에 번호에 맞는 인자 값들이 들어가게 됩니다.
s6 : 인덱스를 중복해서 입력하면 해당하는 인자 값이 또 들어 갑니다. 중복 해도 OK.
▶ 2-3 : format 함수를 사용할때 중괄호가 나오게 하려면?
1 2 3 4 5 6 7 8 | # 나와라 중괄호 s7 = 'Format example. {{}}, {}'.format('test') print(s7) # 중괄호로 겹쳐진 인자값 s8 = 'This is value {{{0}}}'.format(1212) print(s8) | cs |
결과
s7 : 중괄호를 두번 겹치면 원래의 중괄호 문자가 나오게 됩니다.
s8 : 출력할 값을 중괄호로 겹쳐서 출력하려 하면 이렇게 중괄호를 세개로 겹치면 되겠죠?
3. 파이썬 문자열 format 함수 예제 (응용)
▶ 3-1 : 문자열 정렬하기
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 왼쪽 정렬 s9 = 'this is {0:<10} | done {1:<5} |'.format('left', 'a') print(s9) # 오른쪽 정렬 s10 = 'this is {0:>10} | done {1:>5} |'.format('right', 'b') print(s10) # 가운데 정렬 s11 = 'this is {0:^10} | done {1:^5} |'.format('center', 'c') print(s11) | cs |
결과
s9, s10, s11 을 보면 딱 좌 우 가운데 정렬이 되고 나머지 빈 칸은 공백으로 처리 되는 것을 볼 수 있습니다.
왼쪽 정렬에는 기호 < 를 사용하고, 오른쪽 정렬에는 >, 가운데 정렬에는 ^를 사용합니다.
기호 뒤에 나오는 숫자는 자릿수를 말합니다.
즉 아래와 같습니다.
{0:<10} 이 뜻하는 것은 {0} 값을 ":<10" 10자리로 표현할건데 왼쪽 정렬을 할 것이다. 라는 뜻 이고
{1:>5} 가 뜻하는 것은 {1} 값을 ":>5" 5자리로 표현할건데 오른쪽 정렬을 할 것이다. 입니다.
▶ 3-2 : 문자열에 공백이 아닌 값 채우기
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 왼쪽 정렬 s12 = 'this is {0:-<10} | done {1:o<5} |'.format('left', 'a') print(s12) # 오른쪽 정렬 s13 = 'this is {0:+>10} | done {1:0>5} |'.format('right', 'b') print(s13) # 가운데 정렬 s14 = 'this is {0:.^10} | done {1:@^5} |'.format('center', 'c') print(s14) | cs |
결과
이렇게 <, >, ^ 기호 앞에 특정 문자를 입력하면 공백 부분이 다른것으로 채워지는걸 볼 수 있습니다.
▶ 3-3 : 자리수와 소수점 표현하기
1 2 3 4 5 6 7 8 | # 정수 N자리 s15 = '정수 3자리 : {0:03d}, {1:03d}'.format(12345, 12) print(s15) # 소수점 N자리 s16 = '아래 2자리 : {0:0.2f}, 아래 5자리 : {1:0.5f}'.format(123.1234567, 3.14) print(s16) | cs |
결과
s15 : 정수의 자리수를 표현할떄는 '0Nd' 로 표현합니다. N은 원하는 자릿수를 입력하면 됩니다. 자릿수가 부족한 경우는 자동으로 0으로 채워집니다.
s16 : 소수점 자리수를 표현할때는 '0.Nf' 로 표현합니다. N은 소수점 아래 표시할 자릿수를 입력하면 됩니다. 이것도 마찬가지로 남는 부분은 0으로 표시 됩니다.
4. 구구단 프로그램 만들어 보기 (format 함수를 이용해서 자릿수 맞추기)
1 2 3 4 | # 구구단 표시 (2단과 3단만 표시) for a in range(2, 4): # 앞에 표시하는 단 수 (2단, 3단) for b in range(1, 10): # 뒤에 곱하는 수 print('{0} x {1} = {2:2}'.format(a, b, a*b)) | cs |
결과
별거 아니지만 결과 값의 자리수를 맞춰 줌으로 이쁘게 출력할 수 있게 되었습니다.
네, 이상으로 파이썬 format 함수에 대해서 알아보았습니다.
정렬부터 시작해서 자리수 등등 이제는 다양하게 응용해서 쓸 수 있겠죠?
'<개인공부> > [Python]' 카테고리의 다른 글
[python] 파이썬 타입 변환, 형변환 (float, int, str, chr, bool) (0) | 2020.10.04 |
---|---|
[python] 파이썬 all, any 함수 정리 및 예제 (6) | 2020.10.01 |
[python] 파이썬 f-string (문자열 포매팅 방법 3) (4) | 2020.09.24 |
[python] 파이썬 % 서식 기호 (문자열 포매팅 방법 2) (0) | 2020.09.20 |
[python] 파이썬 while문(반복문) 정리 및 예제 (3) | 2020.09.13 |
[python] 파이썬 반올림 round 함수에 대해서 (2) | 2020.09.07 |
[python] 파이썬 대문자 소문자 변경 함수 (upper, lower, isupper, islower) (0) | 2020.09.02 |
[python] 파이썬 sum함수 정리와 예제 (0) | 2020.08.28 |