如何在Ansible Jinja2模板中实现类似Python ljust的左对齐填充输出
方案1:使用Jinja2格式化字符串实现
你可以直接通过Python风格的格式化占位符实现左对齐,无需依赖ljust方法,模板代码如下:
{%- set max_key_len = data['_dictionary'].keys() | map('length') | max %} {% for key, value in data['_dictionary'].items() %} {{ "%-*s %s" | format(max_key_len, key, value) }} {% endfor %}
代码说明:
- 第一行先提取字典所有键的长度,取最大值存为
max_key_len变量,作为统一的对齐宽度 - 格式化语法
%-*s中,-代表左对齐,*代表宽度从后续参数动态获取,正好适配我们提前计算的最大键长 - 两个键值之间保留2个空格,和你Python代码的输出效果完全一致
方案2:直接调用ljust方法
Jinja2的字符串对象原生支持Python的常用字符串方法,你完全可以直接使用ljust,写法和Python几乎一致:
{%- set max_key_len = data['_dictionary'].keys() | map('length') | max %} {% for key, value in data['_dictionary'].items() %} {{ key.ljust(max_key_len) }} {{ value }} {% endfor %}
两种方案的输出完全符合你要求的左对齐格式。
内容的提问来源于stack exchange,提问作者dorancemc
相关产品推荐
相关产品推荐

