2010-03-19 20 views
4

J'ai utilisé BeautifulSoup pour gérer les fichiers XML que j'ai collectés via une API REST.De html échappé -> au html régulier? - Python

Les réponses contiennent du code HTML, mais BeautifulSoup échappe à toutes les balises HTML afin qu'il puisse être affiché correctement.

Malheureusement, j'ai besoin du code HTML.


Comment devrais-je continuer à transformer le HTML échappé en un balisage approprié?


Une aide serait grandement appréciée!

+0

l'un des nombreux doublons: http: // stackoverflow. com/questions/663058/html-entité-codes-au-texte – bernie

Répondre

10

Je pense que vous voulez xml.sax.saxutils.unescape à partir de la bibliothèque standard Python.

.: par exemple

>>> from xml.sax import saxutils as su 
>>> s = '<foo>bar</foo>' 
>>> su.unescape(s) 
'<foo>bar</foo>' 
+0

@Alex merci !! C'était sympa et simple! : D – RadiantHex

+2

Malheureusement, il ne gère pas tous les caractères. Par exemple, '' su.unescape ('"') '' ne fonctionne pas. –

+0

Vous pouvez échapper d'autres caractères en les spécifiant dans un dictionnaire comme second paramètre de 'unescape'. Par exemple: 'su.unescape (s, {'"': '"')) ' – amccormack

0

Vous pouvez essayer le module urllib?

Il a une méthode unquote() qui pourrait répondre à vos besoins.

Edit: à la réflexion, (et plus la lecture de votre question), vous pourriez vouloir simplement utiliser string.replace()

comme ceci:

string.replace('&lt;','<') 
string.replace('&gt;','>') 
+3

Pourquoi voudriez-vous prendre soin de coder les différentes étapes de remplacement (pour lt, gt, amp) lorsque le saxutils.unescape les enveloppe toutes vous? -) De plus, rappelez-vous: l'appel de remplacement ne modifie pas la chaîne, il construit une nouvelle chaîne.Votre extrait de code, tel que donné, est un lent no-op! -) –