파이썬 포매팅

[ ARCHIVED ]
  • 더 이상 관심사가 아닌 경우
  • 현재와 다른 내용인 경우
  • 현재 관리되고 있지 않은 경우
Tags:
Created:

문자열 포매팅의 쓸모

먼저 글자를 출력하는 예를 봅시다.

"바나나가 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)
%o8진수(Octal)
%x16진수(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}