2013-06-30 4 views
1

나는 Django/Jinja 스타일의 서식을 정말 좋아합니다. 나는 로직과 프리젠 테이션을 별도로 유지하고자하지만, if 문과 for 루프는 변화하는 양의 데이터를보고 할 때 이상적이다.파이썬 문자열 포맷 : for 루프?

나는 더 자세한 방법으로 입력과 함수의 출력에 대한 정보를 반환하는 "보고서"클래스를 생성하고, 제가하고 싶은 것은 같은 문자열하는 것입니다 오전 :

template=""" 
INPUTS: 
{{% for key,value in inputsdict.items() %}} 
    {{key}}: {{value}} 
{{% endfor #}} 

OUTPUTS: 
{{% for key,value in outputsdict.items() %}} 
    {{key}}: {{value}} 
{{% endfor #}} 
""" 

과 그럼 그냥 고전을 호출 할 수 template.format(**kwargs)

나는 Jinja이 일을하는 가장 좋은 방법인지, 아니면 파이썬이 내가보고 있어야하는 종류의 네이티브, 가벼운 문자열 루프 포맷팅 기능을 가지고 있는지 궁금해.

편집 : 또한 Jinja가 최선의 방법이라면 웹 지향 환경 외부에서 사용하는 방법에 대한 예를 들어 주시면 감사하겠습니다. 문서는 일종의 탐색하기가 어렵습니다.

+0

템플릿 엔진 (사실상 매크로 언어)이 단일 대체를 통해 서브 베드되기를 기대할 수는 없습니다. 'jinja2' 또는 다른 웹 환경 (사실 그것은 그 컨텍스트 외부에서 완벽하게 사용할 수 있습니다) 밖에서 사용할 수 있습니다. 그냥 작업에 적합한 환경 및 컨텍스트를 제공하고 새로운 문자열을 다시 얻으십시오. –

+0

것은 그 진자입니다. 내가 필요로하는 것 이상으로 포장하고, 반드시 {| 정규 파이썬의 <20} 스타일 서식. 그러나 나는 무언가를 얻었다. – RodericDay

답변

1

for 루프에서 데이터를 생성 한 다음 결과에 넣으십시오.

형식 템플릿 시스템을 과도하게 사용할 필요가 없습니다. 필요한 부분에만 사용하십시오.

inputs = ['%s: %s' % (k, v) for k, v in input_dict.items()] 
outputs = ['%s: %s' % (k, v) for k, v in output_dict.items()] 
print '\n'.join('INPUTS:', '\n '.join(inputs), 
       '', 
       'OUTPUTS:', '\n '.join(outputs)) 

당신은 inputs/outputs 생성 함수 단계, 또는 꽤 인쇄를 위해 json 라이브러리에서 무언가를 사용하여 만들 수 있습니다.