상세 컨텐츠

본문 제목

[파이썬(Python)] #26 문자열 템플릿 (string template)

python

by 빨간눈동자 2021. 9. 27. 18:27

본문

반응형

문자열템플릿 문자열생성을 목적으로 한다.

기존의 문자열 템플릿으로 하여, 특정문자열을 변수로서 인식하여 지정한 문자열로 치환하여 출력한다. 

 

예제를 살펴보도록 하자.  아래 코드 4개는 모두 동일한 결과를 가진다. 

 

sample #1)

from string import Template

s = Template('$who likes $what')
t = s.substitute(who='kim', what='apple')
print(t)

sample #2)

from string import Template

template_str = '$who likes $what'

s = Template(template_str)
t = s.substitute(who='kim', what='apple')
print(t)

sample #3)

from string import Template

template_str = '$who likes $what'
who = 'kim'
what = 'apple'

s = Template(template_str)
t = s.substitute(who=who, what=what)
print(t)

sample #4)

from string import Template

template_str = '$who likes $what'
value = { 'who' : 'kim', 'what' : 'apple' }

s = Template(template_str)
t = s.substitute(value)
print(t)

 

 

위에서 살펴본바와 같이 substitute()인자로 dic 자료형 형태로 전달 가능하다.

하지만, 전달된 인자의 짝(?)이 맞지 않다면 아래와 같이 Error가 발생한다.  

from string import Template

template_str = '$who likes $what'
value = { 'who' : 'kim' }               # what에 해당하는 key와 value 삭제

s = Template(template_str)
t = s.substitute(value)
print(t)

 

Error 문구를 좀 더 깔끔(?)하게 출력하기 위해서 아래와 같이 try/except 구문을 사용해 보자. 

from string import Template

template_str = '$who likes $what'
value = { 'who' : 'kim' }

s = Template(template_str)
try:
    t = s.substitute(value)
    print(t)
except KeyError as e:
    print("exception is raised : " + str(e))

 

다음과 같은 Error 상황이 발생하면 안되지만, 이러한 Error 발생을 막기 위해 safe_substitute() 를 사용하기도 한다. 

safe_substitute()는 입력받은 변수에 대해서만 치환을 하고, 나머지는 값 그대로를 문자열로 출력한다. 

from string import Template

template_str = '$who likes $what'
value = { 'who' : 'kim' }                # what에 해당하는 key와 value 삭제

s = Template(template_str)
t = s.safe_substitute(value)             # safe_substitute로 변경
print(t)

 

반응형

관련글 더보기