如何在 Python 的 Mako 模板中迭代时跟踪状态

发布于 2024-08-19 21:29:54 字数 273 浏览 8 评论 0原文

我想循环一个列表并打印由“,”分隔的元素,不带尾随逗号。由于格式化和转义,我不能只是 ', '.join(headings) 。但下面的内容显然给我留下了一个尾随逗号。

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

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

I want to loop over a list and print the elements seperated by ',', with no trailing comma. I can't just ', '.join(headings) because of the formating and escaping. But the following obviously leaves me with a trailing comma.

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

Or more generally: When iterating over something in a Mako template, is there a way to know if I reached the last element (or first, or nt)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自演自醉 2024-08-26 21:29:54

我做这样的事情:

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

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

I do stuff like this:

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

${', '.join( format(item) for item in l)}
别靠近我心 2024-08-26 21:29:54

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

% for i, x in enumerate(headings): 

so i 在第一条腿上为 0,len(headings) - 1 在最后一站。

To keep track of the first or last leg through the loop, in Mako like in plain Python, use:

% for i, x in enumerate(headings): 

so i is 0 on the first leg and len(headings) - 1 on the last leg.

昔梦 2024-08-26 21:29:54

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

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

Extending on @AlexMartelli's answer, I like to couple the enumerate thing with a nice trick to keep the instruction small:

% for i, x in enumerate(xs):
  ${','*bool(i)} ${x}
% endfor
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文