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개를 연속으로 해서 사용하면 됩니다.