Python 如何在标记中检查键值元数据

Python 如何在标记中检查键值元数据,python,markdown,Python,Markdown,我需要检查使用markdown格式化的输入是否在开头有键值对元数据,然后在整个元数据块之后插入文本 我在第一行中查找:,如果找到,在第一个换行处拆分输入字符串并添加我的内容 现在,if markdown\u content.splitlines()[0].find(“:”)>=0:显然会在开头没有元数据的情况下失败,但其他内容包含: 例子 输入元数据: page title: fancypagetitle something else: another value # Heading Tex

我需要检查使用markdown格式化的输入是否在开头有键值对元数据,然后在整个元数据块之后插入文本

我在第一行中查找
,如果找到,在第一个换行处拆分输入字符串并添加我的内容

现在,
if markdown\u content.splitlines()[0].find(“:”)>=0:
显然会在开头没有元数据的情况下失败,但其他内容包含

例子 输入元数据:

page title: fancypagetitle
something else: another value

# Heading

Text
输入时不带元数据,但带有

This is a [link](http://www.stackoverflow.com)

# Heading

Text
我的问题是:如何检查元数据块是否存在,如果存在,如何在元数据和剩余标记之间添加一些内容

元数据的定义 关键字不区分大小写,可以由字母、数字、下划线和破折号组成,并且必须以冒号结尾。这些值由行中冒号后面的任何内容组成,甚至可能为空

如果一行缩进4个或更多空格,则假定该行是前一个关键字值的附加行。关键字可以具有所需的任意多行

第一个空行结束文档的所有元数据。因此,文档的第一行不能为空。在通过降价进行任何进一步处理之前,将从文档中剥离所有元数据


来源:

您是否考虑过查看元数据扩展的源代码以了解它是如何完成的

所采用的方法是:

也就是说,您仍然需要小心不要得到错误的匹配(例如

)。我想无论哪种方式,您都需要重新实现元数据扩展中的所有内容,以满足您自己的需要。当然,它是开源的,所以只要你尊重它,你就可以

对不起,我不能给你下一个版本何时发布的时间表


哦,看看这个特性的描述也会有所帮助,它是Python Markdown特性的灵感来源。这可能会让您更清楚地了解元数据的组成。

举个例子就好了。我不理解这个问题。您是否有一个可能的元数据键列表,可以将
之前的部分与之进行比较?或者有其他一些规则来区分这两种冒号?例如,在这里搜索
:“
可能已经足够了。。。
META_RE = re.compile(r'^[ ]{0,3}(?P<key>[A-Za-z0-9_-]+):\s*(?P<value>.*)')
META_MORE_RE = re.compile(r'^[ ]{4,}(?P<value>.*)')
---
page title: fancypagetitle
something else: another value
...

# Heading

Text