The*_*ear 6 python markdown r-markdown
我想编写一个脚本,为我单位中的每个团队生成报告,其中每个报告使用相同的模板,但每个报告使用每个团队特定的数字。该报告应采用 .pdf 等非程序员知道如何打开和阅读的格式。这在很多方面类似于 R 的 rmarkdown,但我想要生成的报告基于已经用 python 编写的代码中的数据。
我正在寻找的解决方案不需要直接导出为pdf。它可以导出为 markdown,然后我就知道如何转换。我不需要比 Markdown 提供的任何更高级的格式。它不需要是 Markdown,但如果我只找到一种从 Python 代码动态填充 Markdown 模板中的数字和文本的方法,我知道如何在 Markdown 中执行其他所有操作。
我需要的是类似于下面的代码块,但规模更大,而不是在屏幕上打印输出,而是将其保存到一个文件(.md 或 .pdf)中,然后可以与每个团队共享。
user = {'name':'John Doe', 'email':'jd@example.com'}
print('Name is {}, and email is {}'.format(user["name"], user["email"]))
Run Code Online (Sandbox Code Playgroud)
因此,所需的功能很大程度上受到我之前使用 rmarkdown 的经验的影响,类似于下面的代码块,其中模板是字符串或作为字符串读取的文件,其中的占位符将从变量(或字典或对象)填充来自Python代码。然后可以保存输出并与团队共享。
user = {'name':'John Doe', 'email':'jd@example.com'}
print('Name is {}, and email is {}'.format(user["name"], user["email"]))
Run Code Online (Sandbox Code Playgroud)
当试图在 python 中找到 rmarkdown 等效项时,我发现了很多指向我熟悉且非常喜欢的 Jupyter Notebook 的指针,但这不是我正在寻找的,因为重点不是共享代码,仅渲染输出。
由于这个问题被投票,我想回答我自己的问题,因为我找到了一个适合我的解决方案。最后,我在存储库中共享了这些报告,因此我以 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 %}
Run Code Online (Sandbox Code Playgroud)
然后你可以在你的 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()
Run Code Online (Sandbox Code Playgroud)
如果您同意您的动态文档处于 Markdown 格式,那么您就完成了并且报告将写入report.py. 如果你想要PDF,可以使用pandoc进行转换。
| 归档时间: |
|
| 查看次数: |
2026 次 |
| 最近记录: |