2010-01-30 67 views
3

我想遍歷一個列表並打印由','分隔的元素,且不包含尾隨逗號。由於格式化和轉義,我不能只是', '.join(headings)。但是,下面顯然留下了一個尾隨的逗號。如何在Python的Mako模板中迭代時跟蹤狀態

% for x in headings: 
    <a href='#${x|u}'>${x}</a>, \ 
% endfor 

或者更一般地說:當在Mako的模板迭代的東西,有沒有辦法知道,如果我到了最後一個元素(或第一或NT)?

回答

4

我做的東西是這樣的:

<%def name="format(item)"><a href="#${item|u}">${item|u}</a> 
</%def> 

${', '.join(format(item) for item in l)} 
+0

任何想法如何調用內置的格式,如HTML轉義('| u'等)從你自己的功能? – Brutus 2010-02-01 17:06:01

+0

@Brutus它應該像任何其他mako模板一樣工作。 – 2010-02-01 18:00:22

4

要在普通的Python跟蹤第一或最後一站的循環時,在馬可一樣,使用:

% for i, x in enumerate(headings): 

所以i爲0在第一程和len(headings) - 1在最後一站。

2

擴展上@ AlexMartelli的答案,我喜歡夫婦enumerate事情有好的技巧,以保持指令小:

% for i, x in enumerate(xs): 
    ${','*bool(i)} ${x} 
% endfor 
+0

Upvote搖滾使用真實性。 – mattmc3 2017-01-12 20:20:04