4

我想遍历一个列表并打印由','分隔的元素,没有尾随逗号。我不能仅仅', '.join(headings)因为格式化和转义。但以下显然给我留下了一个逗号。

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

或更笼统地说:当迭代 Mako 模板中的某些内容时,有没有办法知道我是否到达了最后一个元素(或第一个元素,或 nt)?

4

3 回答 3

4

我做这样的事情:

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

${', '.join( format(item) for item in l)}
于 2010-01-30T19:35:58.557 回答
4

要跟踪循环的第一段或最后一段,在 Mako 中就像在普通 Python 中一样,使用:

% for i, x in enumerate(headings): 

i第一回合和len(headings) - 1最后一回合都是0。

于 2010-01-30T19:38:32.760 回答
2

扩展@AlexMartelli 的答案,我喜欢将这enumerate件事与一个很好的技巧结合起来,以保持指令小:

% for i, x in enumerate(xs):
  ${','*bool(i)} ${x}
% endfor
于 2013-09-07T14:57:17.657 回答