일반 텍스트 출력을위한 Python 기술 또는 간단한 템플릿 시스템
간단한 텍스트로 출력 형식을 지정하기 위해 Python 용 기술 또는 템플릿 시스템을 찾고 있습니다. 내가 요구하는 것은 여러 목록이나 딕셔너리를 반복 할 수 있다는 것입니다. 템플릿을 소스 코드로 하드 코딩하는 대신 별도의 파일 (예 : output.templ)로 정의 할 수 있다면 좋을 것입니다.
내가 무엇을 달성하고자하는 간단한 예를 들어, 우리는 변수를 가지고 title
, subtitle
그리고list
title = 'foo'
subtitle = 'bar'
list = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
템플릿을 실행하면 출력은 다음과 같습니다.
Foo
Bar
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
어떻게하나요? 감사합니다.
Python 용 템플릿 엔진에는 Jinja , Cheetah , Genshi 등이 많이 있습니다. 그들 중 누구와도 실수하지 않을 것입니다.
표준 라이브러리 문자열 템플릿을 사용할 수 있습니다 .
당신은 파일이 그래서 foo.txt
로를
$title
...
$subtitle
...
$list
그리고 사전
d={ 'title':title, 'subtitle':subtitle, 'list':'\n'.join(list) }
그럼 아주 간단합니다
from string import Template
#open the file
filein = open( 'foo.txt' )
#read it
src = Template( filein.read() )
#do the substitution
src.substitute(d)
그런 다음 인쇄 할 수 있습니다. src
물론 Jammon이 말했듯이 다른 좋은 템플릿 엔진이 많이 있습니다 (원하는 작업에 따라 다릅니다 ... 표준 문자열 템플릿이 아마도 가장 간단 할 것입니다).
전체 작동 예
foo.txt
$title
...
$subtitle
...
$list
example.py
from string import Template
#open the file
filein = open( 'foo.txt' )
#read it
src = Template( filein.read() )
#document data
title = "This is the title"
subtitle = "And this is the subtitle"
list = ['first', 'second', 'third']
d={ 'title':title, 'subtitle':subtitle, 'list':'\n'.join(list) }
#do the substitution
result = src.substitute(d)
print result
그런 다음 example.py를 실행하십시오.
$ python example.py
This is the title
...
And this is the subtitle
...
first
second
third
표준 라이브러리와 함께 제공되는 것을 사용하려면 형식 문자열 구문을 살펴보십시오 . 기본적으로 출력 예제와 같이 목록의 형식을 지정할 수 없지만 메서드 를 재정의 하는 사용자 지정 Formatter 로이를 처리 할 수 있습니다 convert_field
.
Supposed your custom formatter cf
uses the conversion code l
to format lists, this should produce your given example output:
cf.format("{title}\n{subtitle}\n\n{list!l}", title=title, subtitle=sibtitle, list=list)
Alternatively you could preformat your list using "\n".join(list)
and then pass this to your normal template string.
I don't know if it is simple, but Cheetah might be of help.
ReferenceURL : https://stackoverflow.com/questions/6385686/python-technique-or-simple-templating-system-for-plain-text-output
'IT박스' 카테고리의 다른 글
최대 너비를 사용하여 CSS에서 비례 적으로 이미지 크기 조정 (0) | 2021.01.09 |
---|---|
NSString이 null인지 감지하는 방법은 무엇입니까? (0) | 2021.01.09 |
신속한 UITableView set rowHeight (0) | 2021.01.09 |
Android는 '? attr / selectableItemBackground'기호를 확인할 수 없습니다. (0) | 2021.01.09 |
catch가 실제로 아무것도 잡지 못하는 경우 (0) | 2021.01.09 |