Форматирование разметки Confluence из CSV Использование jinja2 и некоторые столбцы отсутствуют - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь использовать jinja2 для преобразования файла Excel CSV в шаблон уценки Confluence.В основном это работает, но по какой-то причине в CSV-файле есть 2 столбца, которые не заполняются.Это означает, что заголовки столбцов вставляются в выходной шаблон, но не в текст из этих столбцов.И я не уверен, как попробовать и отладить скрипт jinja2, чтобы понять, почему он не работает (я новичок в кодировании и python)

Я делюсь скриптом python и шаблоном Confluence jinja2, что ониспользует.Извиняюсь, если это слишком много кода, чтобы поделиться.Просто ищите указатели на то, как устранить неполадки или изолировать, где в скрипте и / или шаблоне может возникнуть эта проблема.

Столбцы, которые не заполняются из CSV в файл уценки Confluence, представляют собой «Обоснование» и«Исправление».

Я проверил CSV-файл в Excel, чтобы увидеть, было ли что-то другое в этих 2 столбцах, и скопировал форматирование ячеек из рабочих столбцов в 2 столбца, но, похоже, это не помогло..

Вот скрипт jinja2:

from jinja2 import Environment, FileSystemLoader
import pandas as pd
import os
import sys
reload(sys)
sys.setdefaultencoding('utf8')


# Capture our current directory
THIS_DIR = os.path.dirname(os.path.abspath(__file__))


file = sys.argv[1]
df = pd.read_csv(file)
df = df.fillna('N/A')

appendix_df = df[df['Keep/Add/Appendix'] == 'Appendix']
applied = df[df['Keep/Add/Appendix'] != 'Appendix']

records = applied.to_dict(orient='records')
appendix = appendix_df.to_dict(orient='records')

j2_env = Environment(loader=FileSystemLoader(THIS_DIR),
                         trim_blocks=True)
print(j2_env.get_template('Standards.confluence.j2').render(data=records,appendix=appendix))

Вот шаблон Confluence jinja2:

h1. Title

h2. Table of Contents

{toc}

h2. Subtitle

Text


h2. References

Ref 1



The following typographical conventions are used throughout this guide:

Text

{% for record in data %}


{% if 'h1.' in record['Control'] %}

{{ record['Control'] }}

{% elif 'h2.' in record['Control'] %}

{{ record['Control'] }}

{% else %}

----

h3. {{ record['Control'] }}

*References*:

|| ABC ||
| {{ record['benchmark'] }} |

*Description*:

{{ record['description'] }}


*Rationale*:

{{ record['rationale'] }}


*Audit*:

{{ record['audit'] }}


*Remediation*:

{{ record['remediation'] }}

*Notes*:

{{ record['notes'] }}

{% endif %}
{% endfor %}

---

Вот часть выходного файла уценки, который показываетгде поля «Обоснование» и «Исправление» экспортируются, но не содержат текст из связанных столбцов в файле CSV:

h1. Title

h2. Table of Contents

{toc}

h2. Subtitle

Text



h2. References

Ref 1



The following conventions are used:

Text




h1. Section 1




----

h3. 1.1 Item 1

*References*:

|| ABC || 
| 1 |  

*Description*:

Item 1 Description

*Rationale*:

<This is always blank, but there should be text from the associated CSV file column in this section>


*Audit*:

Item 1 Audit 


*Remediation*:

<This is always blank, but there should be text from the associated CSV file column in this section>


*Notes*:

Item 1 Notes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...