J'ai donc essayé de me débarrasser des caractères HTML spéciaux et j'ai utilisé html.unescape pour cela. Le problème est que s'il y a 2 caractères spéciaux dans une rangée, les fonctions ne fonctionnent pas vraiment comme j'aurais voulu

J'ai essayé plusieurs appels de fonction comme html.unescape (html.unescape (text)), mais c'est sûrement une idée terrible

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

Ainsi, au lieu de remplacer tous les caractères, le résultat est:

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

Existe-t-il un moyen de faire face à ce genre de problème?

0
H8oddo 7 nov. 2019 à 02:12

1 réponse

Meilleure réponse

Les commentaires sont corrects lorsqu'ils disent qu'il y a généralement quelque chose qui ne va pas avec nos données lorsqu'elles s'échappent à plusieurs niveaux. Cependant, si nous voulons accepter ce problème tel qu'il est et que nous devons encore le résoudre, donc si nous recevons une chaîne potentiellement échappée plusieurs fois et que nous ne savons pas à quelle fréquence il est échappé, nous pourrions simplement échapper au diable. hors de lui, c'est-à-dire jusqu'à ce qu'il ne change plus.

Nous pourrions le faire avec une boucle while comme suit:

import html


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

    return s

ce qui nous donne:

>>> 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 à 23:39