gpt4 book ai didi

用于动态文档的 Python 库

转载 作者:行者123 更新时间:2023-12-04 13:00:15 25 4
gpt4 key购买 nike

我想编写一个脚本,为我单位中的每个团队生成报告,其中每个报告使用相同的模板,但每个报告使用每个团队特定的数字。该报告应采用非程序员知道如何打开和阅读的 .pdf 格式。这在很多方面类似于 R 的 rmarkdown,但我想要生成的报告基于来自已经用 Python 编写的代码的数据。

我正在寻找的解决方案不需要直接导出为 pdf。它可以导出为 Markdown,然后我知道如何转换。我不需要任何比 Markdown 提供的更高级的格式。它不需要 Markdown ,但我知道如何在 Markdown 中做其他所有事情,如果我只找到一种方法从 python 代码在 Markdown 模板中动态填充数字和文本。

我需要的是类似于下面的代码块的东西,但在更大的范围内,而不是在屏幕上打印输出,这将保存到一个文件(.md 或 .pdf)中,然后可以与每个团队共享。

user = {'name':'John Doe', 'email':'jd@example.com'}
print('Name is {}, and email is {}'.format(user["name"], user["email"]))

因此,受我以前使用 rmarkdown 的经验影响很大的所需功能看起来像下面的代码块,其中模板是字符串或作为字符串读取的文件,占位符将从变量(或 Dicts 或对象)填充来自python代码。然后可以保存输出并与团队共享。

user = {'name':'John Doe', 'email':'jd@example.com'}
template = 'Name is `user["name"]`, and email is `user["email"]`'
output = render(template, user)

当试图在 python 中找到一个 rmarkdown 等价物时,我发现了很多我熟悉的 Jupyter Notebook 的指针,并且非常喜欢,但这不是我要找的,因为重点不是共享代码,只有渲染输出。

最佳答案

由于这个问题得到了投票,我想回答我自己的问题,因为我找到了一个对我来说完美的解决方案。最后我在一个 repo 中分享了这些报告,所以我用 Markdown 编写报告,而不是将它们转换为 PDF。我仍然认为这是对我原始问题的答案的原因是,这类似于在 Rmarkdown 中创建 Markdown,这是我的问题的核心,并且 Markdown 可以轻松转换为 PDF。
我通过使用后端生成的 HTML 页面的库解决了这个问题。我碰巧用了jinja2但还有许多其他选择。
首先你需要一个markdown的模板文件。假设这是 template.md :

## Overview
**Name:** {{repo.name}}<br>
**URL:** {{repo.url}}

| Branch name | Days since last edit |
|---|---|
{% for branch in repo.branches %}
|{{branch[0]]}}|{{branch[1]}}|
{% endfor %}
然后你在你的 python 脚本中使用了它:
from jinja2 import Template
import codecs

#create an dict will all data that will be populate the template
repo = {}
repo.name = 'training-kit'
repo.url = 'https://github.com/github/training-kit'
repo.branches = [
['master',15],
['dev',2]
]

#render the template
with open('template.md', 'r') as file:
template = Template(file.read(),trim_blocks=True)
rendered_file = template.render(repo=repo)

#output the file
output_file = codecs.open("report.md", "w", "utf-8")
output_file.write(rendered_file)
output_file.close()
如果您的动态文档处于 Markdown 状态,那么您就完成了并将报告写入 report.py .如果你想要 PDF,你可以使用 pandoc 进行转换。

关于用于动态文档的 Python 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58960478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com