从降价fi解析YAML

2024-06-02 07:39:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用我继承的一些遗留代码(例如,许多设计决策不是我的)。在

代码将一个目录组织成带有降价文件的子目录,并将它们编译成一个大的降价文件(使用markdown PP:https://github.com/jreese/markdown-pp)。然后它将这个文件转换成HTML(使用pandoc:https://pandoc.org/),最后转换成PDF(使用wkhtmltopdf:https://wkhtmltopdf.org/)。在

我遇到的问题是许多原始的降价文件都有YAML元数据头。当由Markdown PP缝合在一起时,大型的Markdown最终会出现大量散布在各处的YAML元数据块。在转换为HTML时,由于pandoc处理YAML的方式,大部分元数据都会丢失(许多头文件使用相同的键名,pandoc将单独的YAML头组合起来,只保留对应键的第一个值)。在

我最初没有YAML出现在HTML中,但是可以通过正确修改pandoc的HTML模板来改变这一点。但我只得到每个对应键的第一个值。目前还不清楚在pandoc中是否有解决这个问题的方法,所以我转而在pandoc步骤之前尝试将YAML处理成HTML。我尝试过使用PyYAML解析组合降价中的YAML(全部加载())但只显示第一个YAML块。在

YAML块示例:

---
author: foo
size_minimum: 100
time_req_minutes: 120
# and so on
---

问题是最终文档中20多个模块中的每一个都有相关的元数据。在

为了解析YAML,我使用了从这篇文章中借用的代码:Is it possible to use PyYAML to read a text file written with a "YAML front matter" block inside?

稍作修改。在

^{pr2}$

但即使这样,也只会导致第一个YAML块被读取和输出。在

我希望能够从大的降价文件解析YAML,并用相应的HTML替换它在正确的位置。我只是不确定这些(或任何)软件包是否有能力这样做。可能我只需要在原始的降价文件中手动将YAML更改为HTML(时间密集型,但如果我以这种方式开始的话,我可能已经完成了)。在


Tags: 文件数据代码httpsorgyamlhtml方式