본문 바로가기
Python

[Python] 파이썬 - 05. 여러가지 포맷팅 방법 (%, {}, f-string)

by Hoody Coder 2023. 3. 2.

  이전 게시글에서 지나가듯이 이야기했지만, 파이썬으로 코딩을 하다보면 단순한 문자열작성으로 끝나지 않는 경우가있다.

미리 선언한 변수 값을 출력하거나, 계산을 통해 변경된 값들을 string으로 표현하는 경우가 그 예이다.

이런 값들을 표현할때를 포맷팅(formatting)이라고 하며, 포맷팅을 하는 여러 방법에 대해 알아보자

 

예제는 이전에도 사용했던 컴퓨터 클래스를 약간 수정해서 알아보자

class Computer():
    category="조립식"
    cpu = 2
    cooler = 8
    price=2.8

    def __str__(self):
       return "이곳이다"

myCom = Computer()
print(myCom)

 

1.  "%" 를 사용한 Formatting

# using % formatting
def __str__(self):
   return "Computer: %s, %d, %d, %f" % (self.category, self.cpu, self.cooler, self.price)

첫번째로는 "%"를 통한 포맷팅방법이다. 

출력할 문자열 안에 %{타입} 을 작성하는 것이다. 

기본적으로 %s는 문자열, %d는 정수, %f는 실수를 의미한다.

다만 %f의 경우는 소숫점 몇번째까지 출력을 명시하지않으면 위처럼 0이 길게 출력되는것을 볼 수 있는데 

이것은 아래처럼 조절이가능하다

  return "Computer: %s, %d, %d, %.2f" % (self.category, self.cpu, self.cooler, self.price)

 

2.  "{}"를 이용한 포맷팅 _ 변수 타입 관계 없이 {} 해주면 된다

    # using {} formatting
    def __str__(self):
       return "Computer({},{},{},{})".format(self.category, self.cpu, self.cooler, self.price)

  1번의 방법보다 편하게 {} 를 사용하면 위의 예제처럼 포맷팅하는 값의 데이터 타입을 고려하지않고, 해당하는 변수만 선언해주면된다.

그것이 정수, 문자 등을 가리지 않고 파이썬은 스마트하게 해당하는 값을 받아온다.

소수의 경우 1번과 다르게 딱 선언한 값만을 출력해주는데, 만약 소수 둘째, 셋째 자리까지의 출력을 원한다면 {:.2f}, {:.3f} 와 같은 식을 통해 원하는 소수점을 출력할 수 있다. 

 

 

3.  f-string Formatting

# using f-string formatting
def __str__(self):
   return f"Computer({self.category}, {self.cpu}, {self.cooler}, {self.price})"

 

 

  물론 개발자마다 취향은 다르겠지만, 필자의 경우 f-string을 알게된 이후로 위의 2가지방법으로 string을 출력한 적이 거의없다. 

{}의 경우 1보다 간편하지만, 실제 코드를 작성하는줄이 더 길다고 느껴졌고, 긴 string사이사이에 {}를 선언할경우 몇번째 변수인지 찾는것도 힘들었기 때문이다. 

f-string 방법은 문자열 가장 앞에 f를 붙여주고 시작한다. 그리고 바로 변수를 넣을 위치에 {변수명} 을 작성해주면 된다.

때문에, 가독성이 굉장히 좋다는 장점이 있다. 

 

 

 

 

Index로 돌아가기