2015년 5월 12일 화요일

파이썬(python)의 %로 문자열을 포매팅(formatting)하는 방법

 문자열 중간에 어떤 변수의 내용을 출력하고 싶다면 print()함수를 이용하면 된다.

>>> a=3+4j
>>> b=’hi’
>>> print('a is',a,’and b is’,b) #변수 앞뒤에 공백문자를 자동으로 넣어준다.
a is (3+4j) and b is hi

또는 변수의 내용으로 아예 치환한 문자열을 만들고 싶다면 str() 내장함수를 이용하는 방법도 있다.

>>> a=3+4j
>>> b=’hi’
>>> ‘a is ‘+str(a)+’ b is ‘+ b
a is (3+4j) and b is hi

더 간단하고 일반적인 방법은 문자열 포맷팅 기능을 이용하는 것이다.  C 언어에서 printf() 문을 이용하여 변수의 내용을 출력하는 유사한 방법을 파이썬에서도 지원한다. 이것을 문자열의  formatting이라고 하는데 예를 들어서 정수값을 출력하고 싶다면 다음과 같이 하면 된다.

>>> a=11
>>> “a equals %d.”%a

이와 같이 문자열 내부의 %d는 문자열에 바로 뒤따르는 ‘%변수’의 변수값으로 바꾸어 준다. 두 개 이상을 출력하려면 다음과 같이 괄호로 묶어주면 된다. (괄호로 묶인 자료 집합을 튜플이라고 하며 뒤에서 자세하게 설명할 것이다.)

>>> a=11
>>> b=-22
>>> "vars are %d and %d."%(a,b)
'vars are 11 and -22.'

실수를 출력하려면 %f, 문자열을 출력하려면 %s를 사용하면 된다.

[표 1] 문자열 formatter 의 종류
문자열 포맷팅
기능
%d, %x, %o
십진수, 16진수, 8진수(복소수는 출력이 안 됨)
%f
%.숫자f
실수를 출력 (복소수는 출력이 안 됨.)
표시할 소수점 아래 자리수를 명시한다.
%s
문자열 출력
%%
‘%’ 문자 자체를 출력

문자열을 출력하는 예를 들어보면 다음과 같다.

>>> ss = 'short'   
>>> print('Life is %s.'%ss)
Life is short.

아래 예와 같이 실수의 경우 표시할 소수점 아래 자리수를 지정해줄 수 있다.

>>> rn = 1.2345678  
>>> 'f is about %.4f'%rn
'f is about 1.2346'

소수점 다섯째 자리에서 반올림하여 소수점 넷째 자리까지 표시했음을 알 수 있다.

 한 가지 짚고 넘어갈 것은 %d와 %f 는 복소수는 출력하지 못한다. 복소수는 %s를 이용하여 출력하면 된다.

>>> c1=11+22.3j
>>> print('c1=%s'%c1)
c1=(11+22.3j)

재미있는 것은 %s를 이용하면 숫자나 문자열을 가리지 않고 모두 출력해준다는 것이다. 이는 숫자도 내부적으로 자동으로 문자열로 변환되기 때문이다.

>>> n=1024
>>> print('n equals %s.'%n)
n equals 1024.

따라서 숫자를 출력하든 문자를 출력하든 %s를 사용하여도 전혀 문제가 없다.

댓글 없음:

댓글 쓰기