繁体   English   中英

禁用python-markdown中的反引号内的HTML转义

[英]Disable html escaping inside backticks in python-markdown

我观察到,即使使用safe = False,python-markdown总是会在反引号内转义HTML实体:

In [1]: import markdown

In [2]: markdown.markdown("&")
Out[2]: u'<p>&amp;</p>'

In [3]: markdown.markdown("*&amp;*")
Out[3]: u'<p><em>&amp;</em></p>'

In [4]: markdown.markdown("`&amp;`")
Out[4]: u'<p><code>&amp;amp;</code></p>'

是错误还是功能? 有没有办法保持HTML实体不变?

反引号指定一个代码块 ,这意味着必须对HTML实体进行转义,以便代码正确显示,因此这不是错误。 虽然我不知道您为什么要解决这个问题,并且可能有更好的方法实现目标,但是python-markdown忽略HTML标记内的文本,因此也许将HTML实体封闭在什么都不做的HTML中无法满足您的目的。

>>> import markdown
>>> markdown.markdown("<div>`&amp;`</div>")
u'<div>`&amp;`</div>'

如果您发现<div>标签令人反感,则可以使用div类和类似BeautifulSoup的HTML解析工具对它们进行合理的后处理。

>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<div class='nothing'>`&amp;`</div>")
>>> for div in soup.findAll('div', 'nothing'):
...     div.replaceWithChildren()
>>> print soup
`&amp;`

也许比您最初想要的要复杂一些,但是我认为这可能是最根本的修改方法,除了从根本上修改python-markdown

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM