繁体   English   中英

如何将 mako 模板中的多个换行符转换为一个换行符?

[英]How to convert multiple newlines in mako template to one newline?

我正在将mako templatepython一起使用,并尝试使用python脚本中的列表生成文本文件。 下面显示了导致问题的部分代码。

% for COMPNAME in tpdob.scalar_modi:
    ${COMPNAME[0]} ${COMPNAME[1]} ${COMPNAME[2]} ${COMPNAME[3]}
% endfor

我正在使用此代码,输出很糟糕。
在这里,我在scalar_modi有很多列表,我将它们一个一个地打印出来(每个列表有 4 个值)。 但问题是,打印了太多换行符,使输出文本文件看起来很难看。 我在网上搜索,但无法找到所需的解决方案。 你能帮我解决这个问题吗?

对输出的评论:

使用${COMPNAME[0]} ${COMPNAME[1]} ${COMPNAME[2]} ${COMPNAME[3]} ,我得到:
1 42 gzb dli

14 23 tpty sre

32 55 普里奥尔德


使用${COMPNAME[0]} ${COMPNAME[1]} ${COMPNAME[2]} ${COMPNAME[3]} \\ ,给出: 11 42 gzb dli14 23 tpty sre32 55 puri ald


我想要它像:
11 42 gzb dli
14 23 tpty sre
32 55 普里奥尔德


当使用if-else条件时,我得到的newlines甚至超过 2 个。 任何人都可以帮我解决这个问题。 我也无法在其文档中找到解决方案:(

我遇到了同样的问题,看起来像是 Windows 版 Mako 模板中的一个错误。 提供模板作为字符串而不是文件引用(如下所示)解决了这个问题。

with open('code.template') as f:
    templateStr = f.read()
template = mako.template.Template(templateStr)

老话题,但我刚刚发现使用预处理器 kwarg 的更好方法:

tpl_lookup = TemplateLookup(directories=['./templates'], output_encoding='utf-8', module_directory='./tmp', preprocessor=[lambda x: x.replace("\r\n", "\n")])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM