Appia의 IT세상

파이썬[Python] 문자열 템플릿(string Template) 활용하기 본문

Python/Python 응용

파이썬[Python] 문자열 템플릿(string Template) 활용하기

Appia 2020. 5. 13. 07:50
반응형

이번 포스팅에서는 문자열에 대해서 이야기를 해볼까 합니다. 파이썬[Python]으로 가장 좋은 활용방안등을 찾아본다면 단연 문자열 파싱 또는 로그 출력등이 되지 않을까 싶습니다. (물론 개인적인 소견입니다.) 물론 개인적인 업무 범위가 어느정도 반영한다고 할 수 있습니다. 저의 경우 다수의 데이터를 처리하는데, 사용자 요구사항으로 처리된 데이터 항목, 문제가 있는 데이터 항목등에 대해서 명기하고 관련해서 기록으로 남겨야 합니다. 당연시 그러다 보니, 자연스럽게 로그 정보 쓰는데에 많이 익숙한편입니다. 

 

그래서 이번 포스팅은 이와 같이 로그 정보등에서 활용 가능한 문자열 템플릿 생성하고 정하는 방법에 대해서 살펴보고자 합니다. 

 

먼저 위의 문자열 템플릿(string Template)은 주로 stiring 모듈에 Template 메소드를 활용합니다. 그럼 다음을 한번 살펴보겠습니다. 

example) 

import string
 
log_template = string.Template("""
Log Type : $LogType
Log Value : ${LogTarget} is targeted 
Log Message : $LogMessage
""")
 
LogValue = {"LogType":"Log001""LogTarget":"SIg001","LogMessage":"There is no signal"}
 
print (log_template.substitute(LogValue))
cs

result)

Log Type : Log001
 
Log Value : SIg001 is targeted 
 
Log Message : There is no signal
cs

위에서 $명령어를 사용해서, Ditcionary의 키값을 토대로 다음과 같이 출력이 가능토록 했습니다. 만약, 위와 같이 딕셔너리의 키, 와 값을 이용해서 하나의 Template의 이와 같은 형태로 값을 사용할 수 있습니다. 그럼 string 모듈을 사용하지 않는 형태로 한번 살펴보겠습니다. 

example) 

log_stemplate = """
Log Type : %(LogType)s
Log Value : %(LogTarget)s is targeted 
Log Message : %(LogMessage)s
"""
 
LogValue = {"LogType":"Log001""LogTarget":"SIg001","LogMessage":"There is no signal"}
 
print("Other Example :",log_stemplate % LogValue)
cs

result) 

Other Example : 
 
Log Type : Log001
 
Log Value : SIg001 is targeted 
 
Log Message : There is no signal
cs

좀 다르지만, 특정 모듈에 종속 되지 않고 사용할 수 있다는 장점이 있습니다. 하지만 반드시 주의 해야할 점이 있습니다. 바로 딕셔너리의 키값이 반드시 존재해야 합니다. 그럼 혹시 키값이 존재 하지 않는다면 어떻게 될까요? 다음 예시를 한번 살펴보겠습니다. 

example)

log_stemplate = """
Log Type : %(LogType)s
Log Value : %(LogTarget)s is targeted 
Log Message : %(LogMessage)s
"""
 
LogValue = {"LogType1":"Log001""LogTarget":"SIg001","LogMessage":"There is no signal"}
 
print("Other Example :",log_stemplate % LogValue)
cs

result) 

Traceback (most recent call last):
 
  File "C:/Users/Bens/PycharmProjects/Blogger/Variable.py", line 8in <module>
  
    print("Other Example :",log_stemplate % LogValue)
    
KeyError: 'LogType'
cs

제가 인위적으로 LogValue의 키값을 하나 바꿨더니 다음과 같은 에러가 나왔습니다. 실제 위와 같은 형태로 작업을 하면 String 모듈을 사용하면 조금 더 용이합니다. 다음 예시를 한번 보겠습니다. 

 

example) 

import string
 
log_template = string.Template("""
Log Type : $LogType
Log Value : ${LogTarget} is targeted 
Log Message : $LogMessage
""")
 
LogValue = {"LogType1":"Log001""LogTarget":"SIg001","LogMessage":"There is no signal"}
 
try :
 
    print (log_template.substitute(LogValue))
    
except KeyError as err:
 
    print ('the Key error :',str(err))
cs

result) 

the Key error : 'LogType'
cs

다음과 같이 에러가 나타나면 다음과 같은 메시지가 나타납니다. 그럼 실제 어디에서 에러가 났는지 쉽게 확인이 가능하죠? 

 

오늘 포스팅은 문자열 템플릿(String Template)을 활용하는 방법등에 대해서 살펴봤습니다. 흔히 로그 정보 등을 쓰는데 매우 많이 사용됩니다. 

 

혹시 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글남겨주시길 바랍니다. 감사합니다. 

반응형
Comments