Así que he estado tratando de deshacerme de caracteres HTML especiales y usé html.unescape para eso. El problema es que si hay 2 caracteres especiales en una fila las funciones realmente no funcionan como hubiera querido

He intentado varias llamadas de función como html.unescape(html.unescape(text)), pero seguramente esa es una idea terrible

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

Así que en lugar de conseguir todos los caracteres reemplazados, la salida es:

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

¿Hay alguna manera de lidiar con este tipo de problema?

0
H8oddo 7 nov. 2019 a las 02:12

1 respuesta

La mejor respuesta

Los comentarios son correctos cuando dicen que por lo general hay algo mal con nuestros datos cuando se escapa a múltiples niveles de profundidad. Sin embargo, si queremos aceptar este problema tal como es, y todavía tenemos que resolverlo, así que si recibimos una cadena que se escapa potencialmente varias veces, y no sabemos con qué frecuencia se escapa, podríamos simplemente escapar de él , es decir, hasta que ya no cambie.

Podríamos hacer esto con un while-loop de la siguiente manera:

import html


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

    return s

que nos da:

>>> ultimately_unescape("Anchor says Buckingham Palace pressure killed ABC's story on Epstein"))
"Anchor says Buckingham Palace pressure killed ABC's story on Epstein"
0
jonathan.scholbach 6 nov. 2019 a las 23:39