파이썬에서 문자열을 포맷팅할 때 문자열 객체의 멤버 함수인 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보다 더 간략하게 사용할 수 있다.



Posted by 살레시오
,

 문자열 중간에 어떤 변수의 내용을 출력하고 싶다면 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를 사용하여도 전혀 문제가 없다.



Posted by 살레시오
,