当我从客户端呈现切换到服务器端呈现时,我遇到了python markdown和markedjs之间的差异。
考虑以下标记:
**bold text**
* list item 1
* list item 2
* list item 3markedjs会从容地创建一个无序列表html列表:
<p>
<strong>bold text</strong>
</p>
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>而python-markdown创建:
<p>
<strong>bold text</strong>
<em> item1</em> item2
* item3
</p>这里的问题似乎是python-markdown (在markdown.pl之后)不会接受缺少的空行,并使用粗体标记将第一个列表项拉入考虑中……
有没有办法配置python markdown来优雅地处理这种情况,也就是说,在某种程度上,用户不会对奇怪的html输出感到惊讶?
提前感谢!
发布于 2019-02-05 22:50:02
有没有办法通过配置python markdown来优雅地处理这种情况呢?
你可以写一个扩展。Python-Markdown的extension API提供了对整个解析器的访问,这样您就可以覆盖解析器的任何部分。因此,如果您想要更改行为,以使开始列表时不需要空行,则可以用您自己的blockprocessors替换相应的行为。
请注意,Python-Markdown开发人员已经明确表示,他们对支持Commonmark不感兴趣。因此,任何让Python-Markdown符合Commonmark的工作都需要作为第三方扩展来完成。
关于被识别为重点的列表项,这是一个错误,我刚刚报告为issue #783。谢谢你让我们注意到这一点。
完全公开:我是Python-Markdown的首席开发人员。
发布于 2019-02-05 23:06:11
在这种情况下,Python-Markdown的行为适用于John Gruber的原版(您可以在Markdown projects website上测试它)。也许你可以为Python-Markdown写一个扩展来改变这个行为。
你也可以看看python-markdown2,它们有一个选项来改变解析器的行为,以接受没有换行符的列表(拥抱列表):
import markdown2
md_text = "**bold text**
* list item 1
* list item 2
* list item 3"
md = markdown2.markdown(md_text, extras=['cuddled-lists'])
print(md)这将导致:
粗体文本
https://stackoverflow.com/questions/54529652
复制相似问题