Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

Python

[Python] 문자열 포맷팅하는 3가지 방법

Kellyyyy 2020. 11. 19. 08:00

 

1. % 포맷팅

 

% 문자를 사용해서 원하는 형식으로 포맷팅하는 방법이다.  ' % + 자료형 종류 ' % 값의 형식으로 사용한다.

 

n = float(input())
print("%f" % n)
# 입력 : 10
# 결과 : 10.0000

 

자료형별로 어떤 문자를 사용해야하는지 숙지해야한다. 자주 사용하는 자료형을 정리했다.

 

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

 

사용할 때 주의해야하는 점은 명시한 자료형마다 입력값으로 사용할 수 있는 자료형이 정해져있다는 점이다. input() 함수로 입력 받은 문자열을 실수형으로 포맷팅 하려고 하면 아래와 같은 오류가 발생한다. 

 

# 잘못 사용하는 경우
n = input()
print("%f" % n)

# 입력 : 10
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-41-ed5a18cbf51e> in <module>()
      1 #11.
      2 n = input()
----> 3 print("%f" % n)

TypeError: must be real number, not str

 

실수형으로 포멧팅하기 위해서는 수 자료형만 입력가능하다. 자료형 별로 사용할 수 있는 입력자료형은 아래와 같다.

 

자료형 문자 입력 자료형
정수 %d 수 자료형(정수, 실수)
실수 %f 수 자료형(정수, 실수)
문자열 %s 문자열, 수 자료형
8진수 %o 정수형
16진수 %x 정수형
% %% 문자 %

 

좀 더 다양한 상황에서 사용하는 방법을 정리해보자.

 

(1) 여러 개의 변수를 사용할 때

 

a, b = map(int,input().split())
print("%d %d" % (a,b) )
# 입력 : 1,2
# 결과 : 1 2

 

(2) 자릿수를 지정할 때

 

N자리로 포맷팅할 때,

정수부 : 0Nd

실수부 : 0.Nf

 

# 정수부

a, b, c = map(int,input().split('.'))
print('%04d.%02d.%02d' % (a,b,c))
# 입력 : 2020.8.20
# 출력 : 2020.08.20

# 실수부

a = float(input())
print("%0.2f" %)
# 입력 : 1.59245
# 출력 : 1.59

 

2. format 함수

 

파이썬의 내장함수인 format()를 사용하여 포맷팅하는 방법이다. %포맷팅처럼 여러개의 값을 포맷팅 할 수 있고, 자릿수를 지정할 수도 있다. 사용하는 방법은 여러가지가 있는데 하나씩 예시를 통해 살펴본다.

 

(1) 값을 입력하기

 

print("나는 {0}시 {1}분에 밥 먹을거야".format(7,23))
# 출력 : 나는 7시 23분에 밥 먹을거야

 

(2) 변수를 입력하기

 

a, b, c = map(int,input().split('.'))
print('{0:04d}.{1:02d}.{2:02d}'.format(a,b,c))
# 입력 : 2020.8.14
# 결과 : 2020.08.14

 

(3) 매개변수를 지정하여 입력하기

 

format()에 입력하는 값의 순서를 내 마음대로 바꿀 수 있다는 장점이 있다.

 

a, b, c = map(int,input().split('.'))
print('{Y:04d}.{M:02d}.{D:02d}'.format(D=c,Y=a,M=b))
# 입력 : 2020.8.25
# 결과 : 2020.08.25

 

3. f-string 문법

 

Python 3.6 이상의 버전부터 f-string 문법을 사용할 수 있다. 사용방법은 문자열 앞에 접두사 f를 붙이고, 중괄호 ({}) 안에 변수를 넣는 것이다. 

 

s = '일'
print(f'나는 하고 싶은 {s}을 하면서 살고싶다.')
# 결과 : 나는 하고 싶은 일을 하면서 살고싶다.

 

f-string 문법의 가장 큰 장점은 자료형의 번환 없이 문자열과 정수를 함께 넣을 수 있다는 점인 것 같다. 다른 언어와 다르게 파이썬은 문자열과 수 자료형을 더하기 연산자 (+) 만으로 함께 출력하지 못한다.

 

# 잘못 사용하는 경우
hour = 7
print('나는' + hour + '시에 밥 먹을거야')

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-4109babac9b6> in <module>()
      1 hour = 7
----> 2 print('나는' + hour + '시에 밥 먹을거야')

TypeError: must be str, not int

 

이럴 때는 str() 함수를 통해 수 자료형을 문자열로 바꿔주는 작업을 해줘야하는데 f-string 문법을 사용하면 이런 작업 없이 함께 출력이 가능하다.

 

hour = 7
print(f'나는 {hour}시에 밥 먹을거야')
# 결과 : 나는 7시에 밥 먹을거야

-- 근데,, 자릿수 지정 같은 기능은 못하는듯...?-

 

파이썬 포맷팅에 관해 상세하게 설명해주신 블로그가 있어서 링크를 걸어둔다!

https://blockdmask.tistory.com/424

 

[python] 파이썬 format 함수 (문자열 포매팅 방법 1)

안녕하세요. BlockDMask 입니다. 파이썬에서 문자열 포매팅 방법은 %와 서식기호를 이용한 방법, format 함수를 이용한 방법, f-string을 이용한 방법 이렇게 세가지가 있다고 볼 수 있습니다. 오늘은

blockdmask.tistory.com