문자열 포매팅의 쓸모
먼저 글자를 출력하는 예를 봅시다.
"바나나가 1개가 있다.","바나나가 2개가 있다."
여기서 바뀐 점은 1과 2뿐입니다.
이 두 문자열을 프린팅을 할 때 두 문자열을 모두 출력하려면 다음과 같은 코드가 필요합니다.
print("바나나가 1개가 있다.")
print("바나나가 2개가 있다.")
지금은 겨우 2개라서 별로 그래 보이지 않지만 생활 코딩님이 그러셨습니다. 코딩을 할 때는 극단적으로 생각하라고. 같은 항목이 1억 개가 있다고 생각하세요.
그렇다면
print("바나나가 1개가 있다.")
print("바나나가 2개가 있다.")
print("바나나가 3개가 있다.")
print("바나나가 4개가 있다.")
.
.
.
이렇게 1억줄의 코드를 쓰기에는 시간이 너무 아깝지 않나요? 이때 포매팅을 쓸 수 있습니다.
포매팅의 방법
먼저 문자열 포매팅의 다양한 사용법을 알아보자.
1 . C 방식 사용하기
>>> print("바나나가 %d개가 있다." % 1)
'바나나가 1개가 있다.'
다음 코드에서 문자열 뒤에 붙인 % 1 이 문자열 안 %d의 위치에 들어간 것이다.
>>> print("바나나가 %d개가 있다." % 1)
'바나나가 1개가 있다.'
다음처럼 변수를 넣을 수도 있다.
>>> banana = 1
>>> "바나나가 %d개가 있다." % banana
'바나나가 1개가 있다.'
만약 두 개 이상의 값을 포매팅 해야 한다면 % 1을 % (1, 2, 3) 등으로 ()괄호 안에 넣어서 표현할 수 있습니다.
만약 문자열 속에 "%" 글자를 넣고 싶다면 "%%"를 사용해야 한다. 이렇게 말이다.
>>> "%d%% 세일!!" % 10
"10% 세일!!"
문자열 포맷 코드
| 코드 | 설명 |
|---|---|
| %s | 문자열(String) |
| %c | 문자 1개(Character) |
| %d | 정수(Integer) |
| %f | 부동소수(Floating Point) |
| %o | 8진수(Octal) |
| %x | 16진수(Hexadecimal(hex)) |
| %% | 문자 “%” |
포맷 코드와 숫자 함께 사용하기
사실 이 부분은 거의 쓰지않는다;;
정렬
다음과 같이 %<숫자>s를 넣으면 <숫자> 만큼의 공백(" “)의 속에 포맷을 한 값을 공백 뒤에 넣는다.
>>> "%15s" % "nyan"
' nyan'
다음과같이 코드를 짠다면
>>> "%-15s" % "nyan"
'nyan '
다음과같이 앞에 포맷값이 들어간다.
소수점 표현
다음과같이 %<숫자1>.<숫자2>f를 넣으면 <숫자1> 은 공백 정렬과 같은 효과, <숫자2>는 소수점 아래 <숫자2>까지 나올 숫자의 개수를 말한다.
>>> "%0.6f" % 3.14159265358979323846264
'3.141592'
>>> "%15.6f" % 3.14159265358979323846264
' 3.141592'
2 . format 함수를 이용 방식 사용하기(파이썬 방식)
format 함수 방식은 앞에나온 C 방식보다 더 쉽고 나은 방식이다.
>>> "바나나가 {0}개가 있다.".format(1)
'바나나가 1개가 있다.'
{0} 부분이 .fotmat() 에 나오는 인덱스 값이다.
{0}에 .format(1, 2, 3)에서 0번째인 1을 넣는다.
만약 두개이상의 값을 넣을려면 당연하게도 문자열에 {0}외에도 {1}, {2}등을 넣어주면 된다.
값을 대입할때 변수로 넣기
다음과같이 인덱스를 넣을때 변수에 넣을 수 있다.
>>> "바나나가 {banana}개가 있다.".format(banana=1)
'바나나가 1개가 있다.'
정렬
>>> "{0:<10}".format("nyan")
'nyan '
:<[숫자]를 사용하면 포맷된 값을 [숫자]만큼 공백(” “)의 왼쪽에 삽입한다.
>>> "{0:>10}".format("nyan")
'nyan '
:>[숫자]를 사용하면 포맷된 값을 [숫자]만큼 공백(” “)의 오른쪽에 삽입한다.
>>> "{0:^10}".format("nyan")
'nyan '
:^[숫자]를 사용하면 포맷된 값을 [숫자]만큼 공백(” “)의 가운데에 삽입한다.
공백을 값으로 채우기
>>> "{0:-<10}".format("nyan")
'nyan------'
:[문자][기호][숫자]를 사용하면 공백(” “) 대신 문자가 채우게 된다.
소수점 표현
다음과같이 %<숫자1>.<숫자2>f를 넣으면 <숫자1> 은 공백 정렬과 같은 효과, <숫자2>는 소수점 아래 <숫자2>까지 나올 숫자의 개수를 말한다.
>>> "{0:0.6f}".format(3.14159265358979323846264)
' 3.141592'
3. f 포메팅 문자 사용하기
이 방식이 가장 많이 사용된다.
>>> banana = 1
>>> f'바나나가 {banana}개가 있다.'
'바나나가 1개가 있다.'
또는
>>> f'바나나가 {1}개가 있다.'
'바나나가 1개가 있다.'
이처럼 문자열 앞에 f를 붙여주고 포메팅 할 부분에 {}를 넣고 그 안에 값을 넣는 방식으로 가장 심플하고 쉽게 쓸 수 있다.
문자열 앞에 f를 붙여준다는점을 제외하고는 앞의 format() 함수 사용과 별차이점이 없기때문에 따로 설명하지는 않겠다.
"{", "}" 문자 사용하기
"{", "}"문자를 사용할때는 "{{", "}}"를 사용하면 된다.
마무리
이상으로 파이썬 문자열 포메팅 포스팅을 마치겠습니다..
📌 이 포스팅은 박응용 님의 DOIT! 점프투 파이썬을 보고 배우고 만들었습니다. 비슷한 부분이 있을 수 있습니다. 🏷 강의 링크 {: .notice–info}