본문 바로가기
인공지능(AI) 개발/Python

파이썬 문자열 포매팅(formatting)

by Jaeseok_Shim 2020. 4. 6.

파이썬 문자열 포매팅은 크게 두가지로 나눌 수 있다.

 

  • % 이용 
  • format() 이용

1. 서식 지정자 % 이용 방법

서식지정자라고 하는 %s, %d, %f 는 파이썬2에서 사용하던 방식이다.

최근까지도 많이 사용되고 있지만 개인적으로는 format() 함수를 이용하길 권한다.

하지만 예전 소스를 보다보면 많이 볼 수도 있으니 공부해두는 것이 좋겠다.

사용 방법은 % 뒤에 s, d, f 를 붙혀서 사용한다.

 

  • %s : 문자형(String) 서식
  • %d : 숫자형(Decimal) 서식
  • %f : 소수형(Float) 서식

 

s_name = 'My name is %s' % '홍길동'
print(s_name)

s_age = 'My age is %d' % 20
print(s_age)

s_score = 'My Score is %f' % 92.5
print(s_score)

s_score = 'My Score is %.2f' % 92.5
print(s_score)

 

My name is 홍길동
My age is 20
My Score is 92.500000
My Score is 92.50

 위 예시를 보면 %f 는 6자리의 소수점 자리수가 표현되는데 자리수를 변경하려면 % 뒤에 .[자리수]로 작성하면 된다.

 

  • %.1f : 1자리
  • %.2f : 2자리
  • %.nf : n자리

서식지정자는 여러 개의 문자열을 사용할 수도 있다.

print('너와 나의 이름은 %s와 %s입니다.' % ('홍길동', '김길동'))
print('나는 %s이며 나이는 %d세입니다.' % ('홍길동', 20))

 

너와 나의 이름은 홍길동와 김길동입니다.
나는 홍길동이며 나이는 20세 입니다.

% 뒤에 숫자를 입력하여 공백을 채워넣을 수도 있다.

만일 %10d 라고 쓰면 전체 자리가 10개라는 의미이다. 이 경우 2자리의 숫자가 입력된다면 공백은 8자리가 되겠다.

s_name = 'My name is %10s' % ('홍길동')
print(s_name)

s_age = 'My age is %10d' % 20
print(s_age)

s_score = 'My Score is %10.1f' % 92.5
print(s_score)
My name is        홍길동
My age is         20
My Score is       92.5

2. format() 함수를 사용

format() 함수는 파이썬3 부터 사용가능했으며 서식지정자(%)와 유사한 문법을 사용한다.

포매팅할 문자영역을 {}로 두고 format() 함수를 사용하면 된다.

 

s_name = 'My name is {}'.format('홍길동')
print(s_name)

s_age = 'My age is {}'.format(20)
print(s_age)

s_score = 'My Score is {}'.format(92.5)
print(s_score)
My name is 홍길동
My age is 20
My Score is 92.5

format() 함수의 파라미터로 여러 개의 문자열을 사용할 수 있으며 {} 에 0, 1, 2 와 같은 인덱스 번호를 줄 수도 있다.

콜론(:) 뒤에 서식지정자 s, d, i, f를 사용할 수 있으며 s는 문자, d, i 는 숫자, f 는 소수형이다.

print('너와 나의 이름은 {}와 {}입니다.'.format('홍길동', '김길동'))
print('나는 {}이며 나이는 {}세입니다.'.format('홍길동', 20))
print('나는 {0}이며 나이는 {1}세입니다.'.format('홍길동', 20))
print('나는 {:s}이며 나이는 {:d}세입니다.'.format('홍길동', 20))
너와 나의 이름은 홍길동와 김길동입니다.
나는 홍길동이며 나이는 20세입니다.
나는 홍길동이며 나이는 20세입니다.
나는 홍길동이며 나이는 20세입니다.

소수 표현은 :.f로 사용하며 . 앞에 자리수를 지정할 수 있다. 

 

  • :.2f : 2자리 소수
  • :.3f : 3자리 소수
  • :.nf : n자리 소수

서식지정자와 : 뒤에 숫자를 입력하여 공백을 처리할 수 있으며, <,  > 를 이용하여 문자열 정렬도 가능하다.

  • < : 공백을 넣고 좌측정렬
  • > : 공백을 넣고 우측정렬
  • :.<10s : 전체 10자리 데이터에 남는 영역은 공백으로 처리하고 좌측정렬
  • :.>10s : 전체 10자리 데이터에 남는 영역은 공백으로 처리하고 우측정렬
# 좌측정렬 예시
s_name = 'My name is |{:<10s}|'.format('홍길동')
print(s_name)

# 우측정렬 예시
s_name = 'My name is |{:>10s}|'.format('홍길동')
print(s_name)

s_age = 'My age is {:10d}'.format(20)
print(s_age)

s_score = 'My Score is {:10.1f}'.format(92.5)
print(s_score)
My name is |홍길동       |
My name is |       홍길동|
My age is         20
My Score is       92.5

 

댓글