L'échappement de caractères HTML en Python
J'ai une chaîne contenant des caractères spéciaux comme '
ou "
ou &
(...) peuvent apparaître. Dans la chaîne:
string = """ Hello "XYZ" this 'is' a test & so on """
comment puis-je échapper automatiquement chaque caractère spécial, de sorte que je reçois ceci:
string = " Hello "XYZ" this 'is' a test & so on "
Vous devez vous connecter pour publier un commentaire.
En Python 3.2, vous pouvez utiliser le
html.escape
function, par exemplePour les versions antérieures de Python, vérifiez http://wiki.python.org/moin/EscapingHtml:
quote=True
danscgi.escape
La cgi.échapper méthode de convertir spécial charecters à des balises html valides
entraînera
La seconde en option paramètre sur cgi.échapper échappe citations. Par défaut, ils ne sont pas échappé
xml.sax.saxutils.quoteattr()
.Une simple chaîne de caractères la fonction le fera:
D'autres réponses dans ce fil de discussion ont des problèmes mineurs: La cgi.méthode d'échappement pour une raison ignore les guillemets simples, et vous avez besoin de le demander explicitement à faire du double-guillemets. La page wiki lié n'tous les cinq, mais utilise l'entité XML
'
, ce qui n'est pas une entité HTML.Ce code de fonction n'tous les cinq, tout le temps, à l'aide de HTML standard entités.
Autres réponses ici de l'aide pour que les personnages que vous avez énumérés, et quelques autres. Toutefois, si vous aussi vous voulez convertir tout le reste des noms d'entité, aussi, que vous aurez à faire quelque chose d'autre. Par exemple, si
á
doit être converti ená
, nicgi.escape
nihtml.escape
va vous y aider. Vous aurez envie de faire quelque chose comme ce qui utilisehtml.entities.entitydefs
, qui est juste un dictionnaire. (Le code suivant est fait pour Python 3.x, mais il y a une tentative partielle à la rendre compatible avec les 2.x pour vous donner une idée):