[Python] 문자열 포매팅

1 분 소요


👩 문자열 포매팅

우선 문자열 포매팅을 알아보기 전에 다음과 같이 출력하는 상황을 생각해보자!

a = "hello"
b = "world"

print("a: " + a + ", b: " + b) #a: hello, b: world

이렇게 원하는 형태로 출력을 하고자 하면 번거로운 작업을 해야 한다.

만약 여기서 문자열 포매팅을 사용하면 이러한 작업들이 무척 편안해진다.

print("a: %s, b: %s" %(a, b))

그렇다면 본격적으로 문자열 포매팅을 알아보자!


👩 % 포매팅

👩‍💻 자료형과 형식지정 문자열

자료형 형식지정 문자열
정수 %d
실수 %f
문자열 %s
8진수 %o
16진수 %x

사용법: “형식지정 문자열” % 값”

print("hello %s" % "world") #hello world

print("%s %s" %("hello", "world")) #hello world

print("%d x %d = %d" %(2, 3, 6)) #2 x 3 = 6

print("원주율: %f" % 3.141592) #원주율: 3.141592


👩‍💻 고급 형식지정 문자열

문자열 의미
%0Nd 정수를 N자리로 포매팅한다. 남는 자리는 0으로 채우게 된다.
%.Nf 실수를 N자리로 포매팅한다.
%Ns 전체 N칸을 차지하는 문자열을 나타낸다. 실제 값은 맨 뒤에 존재한다.
%-Ns 전체 N칸을 차지하는 문자열을 나타낸다. 실제 값은 맨 앞에 존재한다.
print("%04d.%02d.%02d" %(2022, 6, 16)) #2022.06.16

print("원주율: %.2f" % 3.141592) #원주율: 3.14

print("%20s" % "bye") #                 bye

print("%-20s" % "hello") #hello               


👩 format 함수

문자열 속 % 대신 {}를 사용해 문자열 포매팅을 진행한다.

print("hello {}".format("world")) #hello world

print("{} {}".format("hello", "world")) #hello world

print(" }".format("안녕")) #{} {안녕}

🙄 format 함수를 통해서는 포매팅되는 값의 순서를 지정할 수 있다.

print("{1} {0}".format("hello", "world")) #world hello

print("{b} {a}".format(a = "hello", b = "world")) #world hello
  • 인덱스를 통해서 지정하거나, 원하는 값의 이름을 통해서도 순서를 지정할 수 있다.


👩‍💻 고급 형식지정 문자열

문자열 의미
{:>N} N칸으로 포매팅한다. 오른쪽 정렬로 값은 맨 오른쪽에 자리하게 되고, 나머지는 공백으로 채워진다.
{:< N} N칸으로 포매팅한다. 왼쪽 정렬로 값은 맨 왼쪽에 자리하게 되고, 나머지는 공백으로 채워진다.
{:^N} 전체 N칸으로 포매팅되며, 문자가 중앙 정렬이 된다. 나머지는 공백으로 채워진다.
{:.Nf} 부동소수점의 소수점이 N자리까지 표시된다.
{:,} 천단위마다 쉼표를 표시한다.
  • ”:‘특정문자’>N”을 할 경우, 나머지가 공백이 아닌 특정문자로 채워진다.
print("{:>4}.{:0>2}.{:0>2}".format(2022, 6, 16)) #2022.06.16

print("원주율: {:.2f}".format(3.141592)) #원주율: 3.14

print("{:*^20}".format("bye")) #********bye*********

print("{:,}".format(123456789)) #123,456,789


👩f-string

  • Python 3.6 이상 버전부터 f-string을 사용할 수 있다.
  • 문자열 시작f접두사를 붙인 후, 중괄호 안에 원하는 변수를 넣어 사용한다.
name = "두율"

print(f'안녕하세요! {name}입니다!') #안녕하세요! 두율입니다!

f-string의 경우, format 함수와 동일하게 고급 형식지정 문자열을 사용할 수 있다.

year = 2022
month = 6
day = 16

print(f"{year:>4}.{month:0>2}.{day:0>2}") #2022.06.16

print(f"{year:*^20,}") #*******2,022********


이번 게시글은 여기서 마치도록 하겠다!

🙇‍♀️부족한 부분이 있다면 말씀해주세요! 감사합니다!


📃 참고

  • [https://datascienceschool.net/01%20python/02.04%20%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%ED%98%95%EC%8B%9D%ED%99%94.html]
  • [https://hyjykelly.tistory.com/65]
  • [https://blockdmask.tistory.com/424]

댓글남기기