Python中有哪些能读写Markdown文件的库?

null
Python中有哪些能读写Markdown文件的库?

18 回复

喵喵喵? Markdown 难道不是文本文件?


Python里读写Markdown,这几个库比较常用:

  1. markdown:这是最经典、最流行的库,用于将Markdown文本转换为HTML。它功能强大,支持大量扩展(如表格、代码高亮、目录等)。它主要专注于“读”(解析),标准的“写”操作需要你先生成Markdown语法的字符串。

    import markdown
    # 读:将Markdown转为HTML
    md_text = "# 标题\n这是一段**加粗**文字。"
    html = markdown.markdown(md_text)
    print(html)
    # 输出: <h1>标题</h1>\n<p>这是一段<strong>加粗</strong>文字。</p>
    
  2. mistune:一个速度非常快的Markdown解析器,同样是将Markdown转换为HTML。它的设计目标是纯速度和符合标准,如果你对解析性能有要求,可以优先考虑它。和markdown库一样,它主要负责解析端。

    import mistune
    md = mistune.create_markdown()
    html = md("# 标题\n这是一段**加粗**文字。")
    print(html)
    
  3. markdown-it-py:这是JavaScript上著名的markdown-it的Python移植版。它高度可配置、符合CommonMark标准,并且有一个清晰的插件系统。如果你想深度定制解析规则或需要非常严格的CommonMark兼容性,它是很好的选择。

    from markdown_it import MarkdownIt
    md = MarkdownIt()
    html = md.render("# 标题\n这是一段**加粗**文字。")
    print(html)
    
  4. python-frontmatter:这个库专门用于处理带有Front Matter(元数据,通常是YAML格式)的Markdown文件。它可以轻松地读取和分离元数据与内容,并写回文件。这是管理博客文章、文档页面等场景的利器。

    import frontmatter
    # 读取带Front Matter的文件
    post = frontmatter.load('post.md')
    print(post['title']) # 访问元数据
    print(post.content)  # 访问Markdown正文
    # 修改后写回
    post['title'] = '新标题'
    frontmatter.dump(post, 'new_post.md')
    

简单总结

  • 纯解析/转换用 markdown(全能)或 mistune(求快)。
  • 需要高度配置和标准兼容用 markdown-it-py
  • 要处理带元数据的文件就用 python-frontmatter

根据你的具体场景选一个就行。

她是想问解析吧。当然有。

是的 就是解析 Markdown 文件,然后方便读写的库,有吗?没 google 出来

我搜了一把,很多啊,你看这个 https://github.com/waylan/Python-Markdown

import re

上面回答的都是什么答案啊。
没用过就不要误导了。
强烈建议 mistune

泠妹子都用 re 手动解析 markdown ?

Markdown2 是退步,还是要滚回去用 Markdown。
Mistune 扩展一点都不方便。



我只知道不要用 Markdown2, 比较坑
但是 mistune 使用体验如何 ?

我只是说说… 我只有 md -> html tag 的需求,没自己解析过

mistune 还行吧。 反正我用起来挺顺手的。python 里面其他的 md 库都很鸡肋

我上次写博客程序,调研了一下,听说 mistune 速度很快,于是就用了它。然后我陆陆续续地手工注入了 LaTeX 公式(多行 + 行内)、CrossRef (包括对图片和章节的交叉引用)、BibTeX Citation、PDF 当做图片显示、自定义的相对路径链接、自动产生 Index Page 之类的功能,到最后代码已经惨不忍睹了。

https://git.peidan.me/xhw15/ipwxblog/blob/admin/ipwxblog/core/markdown.py

后来我终于领悟了一件事情,那就是速度都是次要的,关键是它得在设计上支持扩展才行啊…… 所以我开始怀念 Python Markdown 那个库了。下一个版本重写博客程序,我一定不再用 mistune。
- - - -

P.S. 给你看一下我这个魔改过的 Markdown 实际用起来的效果:

https://ipwx.me/notes/Paper-Reading/A-Note-on-the-Evaluation-of-Generative-Models/

可以,很强。

mistune 可以。

回到顶部