6. 파이썬 포맷 코드, format 함수

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난번 파이썬 문자열 연산, 포매팅, 인덱싱, 슬라이싱까지 진행했었습니다.


이번에는 파이썬 포맷 코드와 format 함수에 대해 알아보겠습니다.

파이썬 포맷 코드와 숫자 함께 사용

파이썬 포맷 코드는 문자열안에 원하고자 하는 어떤 숫자나 문자 등을 입력하기 위해 사용합니다.
그런데 포맷 코드를 숫자와 함께 사용했을때 더 유용해집니다.

1. 정렬과 공백

Python
>>> "%5s" % "Hi"
'   Hi'

%5s 는 전체 길이가 5 이고 ‘Hi’ 라는 문장을 오른쪽으로 정렬해서 보여줍니다. 앞에 3 자리가 남는데 빈자리는 공백으로 채워집니다.

Python
>>> "%-15sjimmy." % "Hi"
'Hi             jimmy.'

위에서는 전체 길이가 15 이고 -(마이너스) 이기 때문에 왼쪽 정렬을 합니다. 전체 길이가 15 이지만 jimmy 라는 단어는 제외되어있습니다.

2. 소수점 표현

Python
>>> "%0.5f" % 3.41425627
'3.41426'

3.41425627 의 실수를 소수점 다섯번째 자리까지만 나타냅니다. ‘.'(점) 뒤의 숫자 5 는 소수점 뒤에 나올 숫자의 갯수입니다.

Python
>>> "%10.5f" % 3.41425627
'   3.41426'

위 예를 살펴보면 3.41425627 ‘.'(점) 뒤의 소수점 자릿수는 “%0.5f” 와 동일하지만 ‘.'(점) 앞의 숫자가 틀려졌습니다.
이건 이전 예에서 나왔던 것처럼 전체 길이가 10 자리인 문자열 공간을 뜻하고 10 이 양의 정수이니 오른쪽 정렬을 하는 걸로 알 수 있겠네요
그래서 결과를 보면 아래처럼 전체 길이가 10 자리 인 것을 알 수 있습니다.

Python
'   3.41426'
 1234567890
Python
>>> "%-10.5f" % 3.41425627
'3.41426   '

궁금해서 -10 으로도 해봤습니다
-10인 경우에는 위의 “%-15sjimmy.” 때처럼 왼쪽 정렬을 하는것을 알 수 있습니다.

format 함수를 사용한 포매팅

좀 더 발전된 스타일로 문자열 포맷을 지정하려면 문자열 format 함수를 사용하면 됩니다.
문자열 format 함수를 이용해 변경해 보겠습니다.

숫자 바로 대입

Python
>>> "I eat {0} strawberry.".format(3)
'I eat 3 strawberry.'

문자열에서 {0}에 해당하는 부분이 format(3) 에서 지정한 3 으로 바뀐걸 확인할 수 있습니다.

문자열 바로 대입

Python
>>> "I eat {0} strawberry.".format("three")
'I eat three strawberry.'

문자열에서 {0}에 해당하는 부분이 format(“three”) 에서 지정한 ‘three’ 로 바뀐걸 확인할 수 있습니다.

숫자형 자료형을 가진 변수로 대입

Python
>>> number = 3
>>> "I eat {0} strawberry.".format(number)
'I eat 3 strawberry.'

number 라는 변수 에 숫자 3 을 입력하고 format 함수에서 number 변수를 호출했습니다.
문자열 {0} 에 해당하는 부분이 number 변수에 입력된 숫자 3 으로 바뀐걸 확인할 수 있습니다.

2 개 이상의 값 대입

Python
>>> number = 5<br>>>> day = "four"
>>> "I eat {0} strawberry. I had a stomach ache for {1} days.".format(number, day)
'I eat 5 strawberry. I had a stomach ache for four days.'

2 개 이상의 값을 입력했을 경우 {0}, {1} 의 인덱스 항목이 순서대로 바뀐걸 확인 할 수 있습니다.
숫자형과 문자형 상관없이 변경이 됩니다.

이름으로 넣기

Python
>>> "I eat {number} strawberry. I had a stomach ache for {day} days.".format(number=5, day="three")
'I eat 5 strawberry. I had a stomach ache for three days.'

변수를 사용하지 않고 변수처럼 이름({number} 와 {day})을 넣은후 format 함수에서 이름에 값을 지정해주면 해당 값이 출력되는걸 확인할 수 있습니다.
주의할 점은 name=value 입력값이 존재해야 한다는 겁니다.

인덱스와 이름 혼용

Python
>>> "I eat {0} strawberry. I had a stomach ache for {day} days.".format(5, day="three")
'I eat 5 strawberry. I had a stomach ache for three days.'

인덱스와 name=value 혼용으로도 사용이 가능합니다.

왼쪽 정렬

Python
>>> "{0:<10}".format("hello")
'hello '

:<10 표현식을 사용하면 format 에서 치환해주는 문자열을 왼쪽으로 정렬하고 전체 길이는 10자리로 맞춥니다.

Python
>>> "{1:<10}".format("hello")
"{1:<10}".format("hello") Traceback (most recent call last):
 File "", line 1, in
IndexError: Replacement index 1 out of range for positional args tuple

0:<10 을 1:<10 로 다른 숫자로 바꾸면 index 오류가 납니다

오른쪽 정렬

Python
>>> "{0:>10}".format("hello")
'     hello'

왼쪽 정렬의 반대로 오른쪽 정렬은 부등호의 기호만 바꿔주면 됩니다 ‘<‘ 에서 ‘>’ 로

가운데 정렬

Python
>>> "{0:^10}".format("hello")
'  hello   '

‘^’ 부호를 사용하면 가운데 정렬이 가능합니다. 치환하는 문자열을 제외한 공백의 갯수가 홀수라 앞에 2개, 뒤에 3개의 공백을 가져가네요

공백 채우기

Python
>>> "{0:=^15}".format("hello")
'=====hello====='
>>> "{0:*^15}".format("hello")
'*****hello*****'
>>> "{0:*<15}".format("hello")
'hello**********'

위 처럼 정렬을 하면서 공백 대신 원하는 문자값으로도 정렬을 할수가 있습니다.
주의할 점은 정렬 문자인 <, >, ^ 바로 앞에 원하는 문자값을 넣어야 합니다.

소수점 표현하기

Python
>>> x = 3.41425627
>>> "{0:0.5f}".format(x)
'3.41426'

앞에 예제에서 사용했던 “%0.5f” % 3.41425627 에서 0.5f 는 그대로 사용합니다.

Python
>>> "{0:10.5f}".format(x)
'   3.41426'

자릿수를 10자리로 맞춰보는것도 역시 가능합니다.

{ 또는 } 문자 표현

Python
>>> "{{ OR }}".format()
'{ OR }'

이전에 ‘%’를 표현하기 위해서 ‘%%’를 사용했을때와 마찬가지로 {{ }} 처럼 2개를 연속으로 해서 사용하면 됩니다.

Leave a Comment