首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jinja2模板输出csv格式

jinja2模板输出csv格式
EN

Stack Overflow用户
提问于 2021-12-09 22:50:24
回答 1查看 422关注 0票数 -2

尝试以csv作为逗号对输出进行故障安全逻辑,通过JInja2模板将每列分隔开。故障安全逻辑应该告诉我模块或技术中的任何项目是否丢失。任何帮助,以了解jinja2模板的逻辑。

变量

代码语言:javascript
复制
swproduct_list:
  header: Sw product,sw product module,technology

  details:
    - name: BASE PACKAGE
      Modules:
        - Polygon Manager
        - Common Manager
      tech:
        - SPRING CLOUD
        - SPRING CLOUD

    - name: DMA
      Modules:
        - KUA on demand
        - KUA parameters
      tech:
        - SPRING CLOUD
        - SPRING CLOUD

期望输出

代码语言:javascript
复制
Sw product,sw product module,technology
DMA,KUA on demand,SPRING CLOUD
DMA,KUA parameters,SPRING CLOUD
BASE PACKAGE,Polygon Manager,SPRING CLOUD
BASE PACKAGE,Common Manager,SPRING CLOUD

解决方案- Jinja2模板

代码语言:javascript
复制
{% for intf in swproduct_list.details -%}
{% for ll in intf.Modules -%}
{{ intf.name }},{{ ll }},{{ intf.tech[loop.index0] }}
{% endfor %}
{% endfor %}
EN

回答 1

Stack Overflow用户

发布于 2021-12-12 11:52:54

感谢Zeitounatora comment中提出的建议

创建一个任务,在呈现模板之前使用failassert模块检查每个元素是否有相同数量的模块和技术。

在启动jinja模板之前,我应用了以下assert方法,并且它工作了:

代码语言:javascript
复制
- set_fact:
    check_total: |
      {
      'modules_total': {{ (swproduct_list.details | selectattr('Modules', 'defined') | map(attribute='Modules') | flatten | list) | length }},
      'tech_total': {{ (swproduct_list.details | selectattr('tech', 'defined') | map(attribute='tech') | flatten | list) | length }},
      }


- debug:
    var: check_total

- assert:
    that:
    - check_total.modules_total == check_total.tech_total
    quiet: true
    fail_msg: >
      total no of modules should match with total no of tech
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70297713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档