有没有一种方法可以避免在Python 3中进行多个html.unescape调用?

时间:2019-11-06 23:12:48

标签: python html

因此,我一直在尝试摆脱特殊的HTML字符,并为此使用了html.unescape。问题是,如果连续有两个特殊字符,这些功能将无法按我想要的方式正常工作

我尝试了html.unescape(html.unescape(text))之类的多个函数调用,但这肯定是个糟糕的主意

str='Anchor says Buckingham Palace pressure killed ABC's story on Epstein'
print(html.unescape(str))

因此,不是替换所有字符,而是输出:

Anchor says Buckingham Palace pressure killed ABC's story on Epstein

有没有办法解决这种问题?

1 个答案:

答案 0 :(得分:0)

当他们说我们的数据在多个级别进行深度转义时,通常会出现问题,这是对的。但是,如果我们想按原样接受此问题,并且仍然需要解决它,那么如果我们收到一个可能多次转义的字符串,并且我们不知道它转义的频率,我们可以取消转义直到它不再变化为止。

我们可以使用while循环执行此操作,如下所示:

import html


def ultimately_unescape(s: str) -> str:
    unescaped = ""
    while unescaped != s:
        s = html.unescape(s)
        unescaped = html.unescape(s)

    return s

这给了我们

>>> ultimately_unescape("Anchor says Buckingham Palace pressure killed ABC's story on Epstein"))
"Anchor says Buckingham Palace pressure killed ABC's story on Epstein"