我观察到,python-markdown总是在反引号内转义HTML实体,即使使用safe=False:
In [1]: import markdown
In [2]: markdown.markdown("&")
Out[2]: u'<p>&</p>'
In [3]: markdown.markdown("*&*")
Out[3]: u'<p><em>&</em></p>'
In [4]: markdown.markdown("`&`")
Out[4]: u'<p><code>&amp;</code></p>'它是一个bug还是一个特性;有没有办法保持HTML实体不变?
发布于 2014-03-10 01:20:59
对designate a code block进行反标记,这意味着必须转义HTML实体以便正确显示代码,因此这不是一个错误。虽然我不知道您为什么要绕过这一点,但也许有更好的方法来实现您的目标,python-markdown会忽略HTML标记内的文本,因此也许将您的HTML实体包含在do- you中会符合您的目的。
>>> import markdown
>>> markdown.markdown("<div>`&`</div>")
u'<div>`&`</div>'如果发现<div>标记令人反感,只需使用div类和BeautifulSoup等超文本标记语言解析工具,就可以对其进行合理的后处理。
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<div class='nothing'>`&`</div>")
>>> for div in soup.findAll('div', 'nothing'):
... div.replaceWithChildren()
>>> print soup
`&`也许比您最初想要的要复杂一点,但我认为这可能是除了从根本上修改python-markdown之外最简单的解决方案。
https://stackoverflow.com/questions/19637247
复制相似问题