我想遍歷一個列表並打印由','分隔的元素,且不包含尾隨逗號。由於格式化和轉義,我不能只是', '.join(headings)
。但是,下面顯然留下了一個尾隨的逗號。如何在Python的Mako模板中迭代時跟蹤狀態
% for x in headings:
<a href='#${x|u}'>${x}</a>, \
% endfor
或者更一般地說:當在Mako的模板迭代的東西,有沒有辦法知道,如果我到了最後一個元素(或第一或NT)?
我想遍歷一個列表並打印由','分隔的元素,且不包含尾隨逗號。由於格式化和轉義,我不能只是', '.join(headings)
。但是,下面顯然留下了一個尾隨的逗號。如何在Python的Mako模板中迭代時跟蹤狀態
% for x in headings:
<a href='#${x|u}'>${x}</a>, \
% endfor
或者更一般地說:當在Mako的模板迭代的東西,有沒有辦法知道,如果我到了最後一個元素(或第一或NT)?
我做的東西是這樣的:
<%def name="format(item)"><a href="#${item|u}">${item|u}</a>
</%def>
${', '.join(format(item) for item in l)}
要在普通的Python跟蹤第一或最後一站的循環時,在馬可一樣,使用:
% for i, x in enumerate(headings):
所以i
爲0在第一程和len(headings) - 1
在最後一站。
擴展上@ AlexMartelli的答案,我喜歡夫婦enumerate
事情有好的技巧,以保持指令小:
% for i, x in enumerate(xs):
${','*bool(i)} ${x}
% endfor
Upvote搖滾使用真實性。 – mattmc3 2017-01-12 20:20:04
任何想法如何調用內置的格式,如HTML轉義('| u'等)從你自己的功能? – Brutus 2010-02-01 17:06:01
@Brutus它應該像任何其他mako模板一樣工作。 – 2010-02-01 18:00:22