2

私は、python-markdown が、safe=False であっても、バックティック内の 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エンティティを変更しないようにする方法はありますか?

4

1 に答える 1

-1

バッククォートはコード ブロックを指定します。つまり、コードが正しく表示されるように HTML エンティティをエスケープする必要があるため、これはバグではありません。なぜあなたがそれを回避したいのかわかりませんが、あなたの目標を達成するためのより良い方法があるpython-markdownかもしれません.

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

タグが好ましくない場合は、クラスとBeautifulSoupなどの HTML 解析ツール<div>を使用するだけで、適切に後処理することができます。div

>>> 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.

于 2014-03-09T17:20:59.087 に答える