2013-06-30 106 views
1

我非常喜歡Django/Jinja風格的格式。我明白想要保持邏輯和表示分離,但if語句和for循環在報告不斷變化的數據量時是理想的。Python字符串格式化: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是我最好的選擇這樣做,或者python是否有本機,輕量級的字符串循環格式化功能,我應該看看。

編輯:另外,如果Jinja是我最好的選擇,我真的很感激如何在面向網絡的環境之外使用它。文檔很難瀏覽。

+0

你不能指望一個模板引擎(實際上是一種宏語言)只需要通過一次替換即可實現。你可以在網絡環境之外使用'jinja2'或者其他的東西(事實上它在這個環境之外是完全可用的),只要給它一個合適的環境和上下文來工作,並得到你的新字符串...... –

+0

事情是那個忍者以超過我需要的方式打包,並且不一定遵守{|常規Python的<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庫的東西漂亮的印刷。