我正在尝试通过 saxutils.escape 方法转义分号。
saxutils.escape('<;', {';': ';'})
我希望它能产生
'<;'
但是它给出了
'<;;'
这是设计使然吗?我怎样才能得到我预期的结果?
最佳答案
你的问题是saxutils.escape
分两步进行。首先,它解析 <
, >
,和&
,然后它使用 entities
解析该解析的结果。
曾经<
已替换为<
,你有<;
,所以你最终得到 <;;
.
基本上,它所做的事情是有道理的。如果需要转义分号,那不是因为HTML原因,所以一定是双重转义。在这种情况下,转义由 HTML 要求的转义创建的分号是有意义的。
使用 saxutils.escape
无法获得您想要的结果。您需要使用另一种转义方法。请参阅Python Wiki page on escaping HTML一些想法。
您还可以使用类似我对What is the best way to do a find and replace of multiple queries on multiple files?的回答中的内容。将分号同时替换为其他模式,这样就不会重复替换任何内容。
关于python - saxutils.escape() 转义分号两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063026/