使Bleach允许代码标记

时间:2016-08-28 15:17:28

标签: python markdown bleach

我尝试使用bleach来转义HTML标记。它工作正常,除非我试图插入剪切为页面内容的代码。代码片段插入如下:

<pre>
<code>
 Code sample
</code>
</pre>

代码示例可能包含html标记。如果它们在<pre><code>内,我怎样才能使漂白不逃脱标签?我知道我可以将某些标签列入白名单,但似乎如果它们在代码块内部并且在其他情况下是黑名单,则无法将所有标签列入白名单。外部html标记由Markdown生成。

此外,漂白剂全部逃脱了。和&gt;标志,但如果它们出现在代码段中,它看起来像这样:

for (auto a = 0; i &lt; 10; ++i)

如果漂白剂不具备此功能,您能否建议另一种能够满足我需要的逃生者?

1 个答案:

答案 0 :(得分:0)

您希望将儿童的标签列入白名单&lt;前&gt;和&lt;代码&gt;。从我在文档阅读中可以推断出,您必须逐个定义要列入白名单的标记或使用可调用的标记,每次遇到标记时都会调用callable。

在文档中查看名为Callable Filters

的部分

问题的一个可能解决方案是在clean bleach.clean上传递一个函数,该函数将检查then clean方法遇到的标记是否是代码html标记的子代。你必须在那里解析HTML,你可以使用HTML解析器和xml.eTree from collections import Counter sentence = "google" c = Counter(sentence) print(sorted(c.most_common(), key = lambda x: (-x[1], sentence.index(x[0]))))

以下是不同答案的TreeBuilder