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

Python 如何将mako模板中的多个换行符转换为一个换行符?,python,mako,Python,Mako,我正在将mako模板与python一起使用,并尝试使用python脚本中的列表生成文本文件。下面显示了导致问题的部分代码 % for COMPNAME in tpdob.scalar_modi: ${COMPNAME[0]} ${COMPNAME[1]} ${COMPNAME[2]} ${COMPNAME[3]} % endfor 我正在使用这段代码,输出非常糟糕 在这里,我在scalar_modi中有许多列表,我正在逐个打印它们(每个列表有4个值)。但问题是,打印的新行太多,使输出文

我正在将
mako模板
python
一起使用,并尝试使用
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数据链路接口

14 23 tpty sre

32 55普里阿尔德


使用
${COMPNAME[0]}${COMPNAME[1]}${COMPNAME[2]}${COMPNAME[3]}\
时,给出: 11 42 gzb dli14 23 tpty SRE3 55普里阿尔德


我希望它像:
11 42 gzb dli
14 23 tpty sre
32 55普里阿尔德



当使用
if-else
条件时,我得到的新行数甚至超过了2行。谁能帮我一下吗。我也无法在其文档中找到解决方案:(

我也有同样的问题,看起来像是Mako Templates for Windows中的一个bug。将模板作为字符串而不是文件引用(如下所示)提供解决了问题

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")])
错误链接: