我想遍历一个列表并打印由','分隔的元素,没有尾随逗号。我不能仅仅', '.join(headings)
因为格式化和转义。但以下显然给我留下了一个逗号。
% 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)}
要跟踪循环的第一段或最后一段,在 Mako 中就像在普通 Python 中一样,使用:
% for i, x in enumerate(headings):
i
第一回合和len(headings) - 1
最后一回合都是0。
扩展@AlexMartelli 的答案,我喜欢将这enumerate
件事与一个很好的技巧结合起来,以保持指令小:
% for i, x in enumerate(xs):
${','*bool(i)} ${x}
% endfor