레이블이 포매팅인 게시물을 표시합니다. 모든 게시물 표시
레이블이 포매팅인 게시물을 표시합니다. 모든 게시물 표시

2015년 5월 12일 화요일

파이썬(python) 문자열의 format()메쏘드를 이용한 포매팅

 파이썬에서 문자열을 포맷팅할 때 문자열 객체의 멤버 함수인 format()을 이용할 수도 있다. (이 경우 C#의 문자열 포멧팅과 유사한 방법을 사용할 수 있다.)

>>> age = 44
>>> print(“I’m {0} years old.'.format(age))
I’m 44 years old.

문자열 안의 ‘{번호}’ 가 format() 멤버함수의 인자의 내용으로 치환이 됨을 알 수 있다. 변수의 종류는 가리지 않으며 foramt()함수의 첫 번째 인자가 0번, 두 번째 인자가 1번...순으로 지정된다.

 여러 개의 변수를 출력할 수도 있다.

>>> name='Jang-Hyun Park'
>>> age=44
>>> print("My name is {0} and {1} years old.".format(name,age))
My name is Jang-Hyun Park and 44 years old.

여기에서 문자열 내부의 ‘{0}’은 name 변수로, ‘{1}’은 age변수의 내용으로 치환된다.

 실수의 소수점 아래 자리수를 제한하려면 다음과 같이 하면 된다.

>>> rn = 1.2345678
>>> print("rn is about {0:.4f}.".format(rn))
rn is about 1.2346.

 포맷팅을 하는 두 가지 방법 모두 장단점이 있으므로 상황에 따라 편한 쪽을 택해서 사용하면 된다. 예를 들어서 동일한 변수를 여러 번 출력할 때는 여기에서 소개한 방법이 더 유리하다.

>>> blah = ‘blah’
>>> print(“%s %s %s %s”%(blah, blah, blah, blah))
>>> print(“{0} {0} {0} {0}”.format(blah))

이와 같이 동일한 변수를 여러 번 출력할 경우 세 번째 줄과 같이 문자열의 format() 필드를 이용하면 두 번째 줄의 %-formatter보다 더 간략하게 사용할 수 있다.

파이썬(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를 사용하여도 전혀 문제가 없다.