Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 문자열 템플릿(Template) 클래스 완벽 가이드

파이썬의 문자열 템플릿(string.Template) 클래스는 간단한 템플릿 문자열을 만들 때 사용됩니다. 템플릿 문자열은 파이썬 2.4 버전에서 처음 도입되었으며, 생성자에 템플릿 문자열을 인자로 전달하는 방식으로 생성합니다. 일반적인 문자열 포매팅 연산자가 치환에 퍼센트(%) 기호를 사용하는 것과 달리, 템플릿 객체는 달러($) 기호를 사용한다는 점이 특징입니다.

Template 클래스는 템플릿으로부터 최종 문자열을 생성하기 위해 다음과 같은 세 가지 메서드를 제공합니다.

  • string.Template(template) — 생성자로, 단일 인자인 템플릿 문자열을 받습니다.
  • substitute(mapping, **keywords) — 매핑(mapping)에 담긴 문자열 값으로 템플릿 내 플레이스홀더를 치환하는 메서드입니다. mapping은 딕셔너리와 유사한 객체로, 딕셔너리처럼 값을 참조할 수 있습니다. 키워드 인자를 함께 사용하면 해당 키워드가 플레이스홀더 역할을 합니다. mapping과 키워드 인자를 동시에 사용할 경우 키워드 인자가 우선 적용됩니다. 플레이스홀더가 mapping이나 키워드 인자 어디에도 없으면 KeyError가 발생합니다.
  • safe_substitute(mapping, **keywords) — substitute()와 거의 같게 동작하지만, 플레이스홀더가 누락되어도 KeyError 대신 원래의 플레이스홀더가 그대로 남아 있어 안전하게 처리됩니다. 또한 '$' 문자 자체는 그대로 달러 기호로 반환됩니다.

Template 객체에는 다음과 같이 공개적으로 접근 가능한 속성이 하나 있습니다.

  • template — 생성자의 template 인자로 전달된 객체입니다. 읽기 전용 접근이 강제되지는 않지만, 프로그램 코드에서 이 속성을 임의로 변경하지 않는 것이 좋습니다.

파이썬 템플릿 문자열 예제

from string import Template

t = Template('$when, $who $action $what.')
s = t.substitute(when='In the winter', who='Rajesh', action='drinks', what='Coffee')
print(s)

# 딕셔너리를 substitute 인자로 사용

d = {"when": "In the winter", "who": "Rajesh", "action": "drinks", "what": "Coffee"}
s = t.substitute(**d)
print(s)

실행 결과

In the winter, Rajesh drinks Coffee.
In the winter, Rajesh drinks Coffee.

safe_substitute() 사용 예

from string import Template

t = Template('$when, $who $action $what.')
s = t.safe_substitute(when='In the winter', who='Rajesh', action='drinks', what='Coffee')
print(s)

실행 결과

In the winter, Rajesh drinks Coffee.

템플릿 문자열 출력하기

템플릿 객체의 template 속성을 사용하면 원본 템플릿 문자열을 그대로 확인할 수 있습니다.

from string import Template

t = Template('$when, $who $action $what.')
print('Template String: ', t.template)

실행 결과

Template String: $when, $who $action $what.

$ 기호 이스케이프 처리

템플릿 문자열 안에 실제 달러 기호를 출력하려면 '$$'처럼 두 번 연속으로 작성하면 됩니다.

from string import Template

t = Template('$$ is called $name')
s = t.substitute(name='Dollar')
print(s)

실행 결과

$ is called Dollar

${identifier} 형식 예제

${<identifier>}는 $<identifier>와 동일한 의미를 가집니다. 이 형식은 플레이스홀더 뒤에 유효한 식별자 문자가 이어지지만, 그 문자가 플레이스홀더에 포함되어서는 안 되는 경우에 반드시 필요합니다. 대표적인 예가 ${noun}ification처럼 식별자 바로 뒤에 다른 문자가 붙는 경우입니다.

from string import Template

t = Template('$noun adjective is ${noun}ing')
s = t.substitute(noun='Test')
print(s)

실행 결과

Test adjective is Testing