jpe*_*thy 14 python markdown parsing python-2.7
我想解析然后遍历Markdown文件.我正在寻找像xml.etree.ElementTree这样的东西,但是对于Markdown.
一种选择是转换为HTML,然后使用另一个库来解析HTML.但我想避免这一步.
谢谢.
Way*_*lan 14
正如另一篇评论所提到的,Python-Markdown有一个扩展API,它碰巧使用了xml.etree.ElementTree.理论上,您可以创建一个扩展来访问该内部ElementTree对象并使用它执行您想要的操作.但是,如果您使用原始HTML(包括HTML实体)和/或codehilite扩展,您将获得一个不完整的文档,因为有一些后处理器在序列化字符串上运行.所以我不会为了你的预期目的而重新开始它(完全披露:我是Python-Markdown的开发者).
如果此处存在Markdown实现,则是一个相当冗长的列表.在该列表中的纯Python实现中,Mistune是我所知道的唯一一个使用两步过程的步骤(第一步返回一个解析树,第二步序列化解析树 - 你只需要第一步).我从来没有亲自使用Mistune,也不能说它的稳定性或准确性,但它应该是一个非常好的JavaScript库标记的Python克隆.
如果你四处搜索,我相信一些C实现使用类似的模式.其中一些甚至可能已经有一个Python包装器.如果没有,创建一个包含ctypes的包装器应该不会太困难.
如果由于某种原因,你想用,不给你一个完整的解析树的实现,那么我会建议解析使用生成的HTML LXML(该C 11b的Python包装)或html5lib(纯Python),两者都可以的返回一个ElementTree对象,速度更快(尤其是LXML),并且对无效HTML更加宽容(尤其是html5lib,它更像现实世界中的真实浏览器).请记住,Markdown可以包含原始HTML,并且大多数Markdown解析器只是简单地传递它,有效或无效.如果您尝试使用基于XML的解析器(如xml.etree)或严格的HTML解析器(如标准库中的html.parser)解析它,则单个无效标记可能会使HTML解析器崩溃.
| 归档时间: |
|
| 查看次数: |
5784 次 |
| 最近记录: |