首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python markdown强制执行<ul>,而不需要前面的空行

Python markdown强制执行<ul>,而不需要前面的空行
EN

Stack Overflow用户
提问于 2019-02-05 15:38:53
回答 2查看 153关注 0票数 1

当我从客户端呈现切换到服务器端呈现时,我遇到了python markdownmarkedjs之间的差异。

考虑以下标记:

代码语言:javascript
复制
**bold text**
* list item 1
* list item 2
* list item 3

markedjs会从容地创建一个无序列表html列表:

代码语言:javascript
复制
<p>
  <strong>bold text</strong>
</p>
<ul>
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
</ul>

而python-markdown创建:

代码语言:javascript
复制
<p>
  <strong>bold text</strong>
  <em> item1</em> item2
* item3
</p>

这里的问题似乎是python-markdown (在markdown.pl之后)不会接受缺少的空行,并使用粗体标记将第一个列表项拉入考虑中……

有没有办法配置python markdown来优雅地处理这种情况,也就是说,在某种程度上,用户不会对奇怪的html输出感到惊讶?

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2019-02-05 22:50:02

有没有办法通过配置python markdown来优雅地处理这种情况呢?

你可以写一个扩展。Python-Markdown的extension API提供了对整个解析器的访问,这样您就可以覆盖解析器的任何部分。因此,如果您想要更改行为,以使开始列表时不需要空行,则可以用您自己的blockprocessors替换相应的行为。

请注意,Python-Markdown开发人员已经明确表示,他们对支持Commonmark不感兴趣。因此,任何让Python-Markdown符合Commonmark的工作都需要作为第三方扩展来完成。

关于被识别为重点的列表项,这是一个错误,我刚刚报告为issue #783。谢谢你让我们注意到这一点。

完全公开:我是Python-Markdown的首席开发人员。

票数 0
EN

Stack Overflow用户

发布于 2019-02-05 23:06:11

在这种情况下,Python-Markdown的行为适用于John Gruber的原版(您可以在Markdown projects website上测试它)。也许你可以为Python-Markdown写一个扩展来改变这个行为。

你也可以看看python-markdown2,它们有一个选项来改变解析器的行为,以接受没有换行符的列表(拥抱列表):

代码语言:javascript
复制
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)

这将导致:

粗体文本

  • 列表项%1
  • 列表项%2
  • 列表项% 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54529652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档