我尝试使用python-markdown的headerid扩展来解析我的markdown文件,并使用我的自定义slugify函数:
import markdown
def my_slugify(value, sep):
return "100"
md = markdown.Markdown(extensions=['headerid(slugify=my_slugify)'])
print md.convert("#Head 1")
但我收到了这个错误:
Traceback (most recent call last):
File "a.py", line 7, in <module>
print md.convert("#Head 1")
File "/usr/local/lib/python2.7/dist-packages/markdown/__init__.py", line 296, in convert
newRoot = treeprocessor.run(root)
File "/usr/local/lib/python2.7/dist-packages/markdown/extensions/headerid.py", line 139, in run
id = slugify(''.join(itertext(elem)), sep)
TypeError: 'unicode' object is not callable
我查看了headerid的源代码。似乎headerid扩展只使用unicode对象作为可调用对象:
id = slugify(''.join(itertext(elem)), sep)
所以我的问题是如何将自定义slugify函数传递给headerid?此外,我的python版本是2.7.3,python-markdown是2.3.1。提前谢谢。
答案 0 :(得分:1)
我安装了markdown,可以这样做:
import markdown
def my_slugify(value, sep):
return "100"
extension_config = {'headerid':('slugify','my_slugify')}
md = markdown.Markdown(extensions=extension_config)
print md.convert("#Head 1")
打印
<h1 id="head-1">Head 1</h1>
我希望这可以帮助
答案 1 :(得分:0)
我查看了文档here并再次阅读了标题代码,找到了解决方案:
import markdown
from markdown.extensions.headerid import HeaderIdExtension
def my_slugify(value, sep):
return "100"
md = markdown.Markdown(extensions=[HeaderIdExtension(configs=[('slugify', my_slugify)])])
print md.convert("#Head 1")
给出正确的输出:
<h1 id="100">Head 1</h1>