지난번 파이썬 문자열 연산, 포매팅, 인덱싱, 슬라이싱까지 진행했었습니다.
이번에는 파이썬 포맷 코드와 format 함수에 대해 알아보겠습니다.
👇 파이썬 포맷 상세 내용 확인하기 👇
파이썬 포맷 코드와 숫자 함께 사용
파이썬 포맷 코드는 문자열안에 원하고자 하는 어떤 숫자나 문자 등을 입력하기 위해 사용합니다.
그런데 포맷 코드를 숫자와 함께 사용했을때 더 유용해집니다.
1. 정렬과 공백
>>> "%5s" % "Hi"
' Hi'%5s 는 전체 길이가 5 이고 ‘Hi’ 라는 문장을 오른쪽으로 정렬해서 보여줍니다. 앞에 3 자리가 남는데 빈자리는 공백으로 채워집니다.
>>> "%-15sjimmy." % "Hi"
'Hi jimmy.'위에서는 전체 길이가 15 이고 -(마이너스) 이기 때문에 왼쪽 정렬을 합니다. 전체 길이가 15 이지만 jimmy 라는 단어는 제외되어있습니다.
2. 소수점 표현
>>> "%0.5f" % 3.41425627
'3.41426'3.41425627 의 실수를 소수점 다섯번째 자리까지만 나타냅니다. ‘.'(점) 뒤의 숫자 5 는 소수점 뒤에 나올 숫자의 갯수입니다.
>>> "%10.5f" % 3.41425627
' 3.41426'위 예를 살펴보면 3.41425627 ‘.'(점) 뒤의 소수점 자릿수는 “%0.5f” 와 동일하지만 ‘.'(점) 앞의 숫자가 틀려졌습니다.
이건 이전 예에서 나왔던 것처럼 전체 길이가 10 자리인 문자열 공간을 뜻하고 10 이 양의 정수이니 오른쪽 정렬을 하는 걸로 알 수 있겠네요
그래서 결과를 보면 아래처럼 전체 길이가 10 자리 인 것을 알 수 있습니다.
' 3.41426'
1234567890>>> "%-10.5f" % 3.41425627
'3.41426 '궁금해서 -10 으로도 해봤습니다
-10인 경우에는 위의 “%-15sjimmy.” 때처럼 왼쪽 정렬을 하는것을 알 수 있습니다.
format 함수를 사용한 포매팅
좀 더 발전된 스타일로 문자열 포맷을 지정하려면 문자열 format 함수를 사용하면 됩니다.
문자열 format 함수를 이용해 변경해 보겠습니다.
숫자 바로 대입
>>> "I eat {0} strawberry.".format(3)
'I eat 3 strawberry.'문자열에서 {0}에 해당하는 부분이 format(3) 에서 지정한 3 으로 바뀐걸 확인할 수 있습니다.
문자열 바로 대입
>>> "I eat {0} strawberry.".format("three")
'I eat three strawberry.'문자열에서 {0}에 해당하는 부분이 format(“three”) 에서 지정한 ‘three’ 로 바뀐걸 확인할 수 있습니다.
숫자형 자료형을 가진 변수로 대입
>>> number = 3
>>> "I eat {0} strawberry.".format(number)
'I eat 3 strawberry.'number 라는 변수 에 숫자 3 을 입력하고 format 함수에서 number 변수를 호출했습니다.
문자열 {0} 에 해당하는 부분이 number 변수에 입력된 숫자 3 으로 바뀐걸 확인할 수 있습니다.
2 개 이상의 값 대입
>>> 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} 의 인덱스 항목이 순서대로 바뀐걸 확인 할 수 있습니다.
숫자형과 문자형 상관없이 변경이 됩니다.
이름으로 넣기
>>> "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 입력값이 존재해야 한다는 겁니다.
인덱스와 이름 혼용
>>> "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 혼용으로도 사용이 가능합니다.
왼쪽 정렬
>>> "{0:<10}".format("hello")
'hello ':<10 표현식을 사용하면 format 에서 치환해주는 문자열을 왼쪽으로 정렬하고 전체 길이는 10자리로 맞춥니다.
>>> "{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 tuple0:<10 을 1:<10 로 다른 숫자로 바꾸면 index 오류가 납니다
오른쪽 정렬
>>> "{0:>10}".format("hello")
' hello'왼쪽 정렬의 반대로 오른쪽 정렬은 부등호의 기호만 바꿔주면 됩니다 ‘<‘ 에서 ‘>’ 로
가운데 정렬
>>> "{0:^10}".format("hello")
' hello '‘^’ 부호를 사용하면 가운데 정렬이 가능합니다. 치환하는 문자열을 제외한 공백의 갯수가 홀수라 앞에 2개, 뒤에 3개의 공백을 가져가네요
공백 채우기
>>> "{0:=^15}".format("hello")
'=====hello====='
>>> "{0:*^15}".format("hello")
'*****hello*****'
>>> "{0:*<15}".format("hello")
'hello**********'위 처럼 정렬을 하면서 공백 대신 원하는 문자값으로도 정렬을 할수가 있습니다.
주의할 점은 정렬 문자인 <, >, ^ 바로 앞에 원하는 문자값을 넣어야 합니다.
소수점 표현하기
>>> x = 3.41425627
>>> "{0:0.5f}".format(x)
'3.41426'앞에 예제에서 사용했던 “%0.5f” % 3.41425627 에서 0.5f 는 그대로 사용합니다.
>>> "{0:10.5f}".format(x)
' 3.41426'자릿수를 10자리로 맞춰보는것도 역시 가능합니다.
{ 또는 } 문자 표현
>>> "{{ OR }}".format()
'{ OR }'이전에 ‘%’를 표현하기 위해서 ‘%%’를 사용했을때와 마찬가지로 {{ }} 처럼 2개를 연속으로 해서 사용하면 됩니다.





