Convertir & amp; a & amp; amp; en Python
Pregunta
Estoy trabajando en un rastreador simple en Python. El objetivo es crear un sitemap.xml. (puede encontrar la versión muy alfa aquí: http://code.google.com/p/sitemappy / ) Noté que si genero el xml con URL que contienen entidades que no son HTML (como & amp;), el xml no se valida y las Herramientas para webmasters de Google no lo aceptan. ¿Existe una forma rápida de codificar la parte de la cadena de consulta de las URL?
¡Gracias!
Matteo
Solución
cgi.escape
al rescate:
cgi.escape (s [, quote])
Convertir los caracteres '& amp;', '<' y '>' en cadenas a secuencias seguras para HTML. Use esto si necesita mostrar texto que pueda contener dichos caracteres en HTML. Si la cita de bandera opcional es verdadera, el carácter de comillas ('"') también se traduce; Esto ayuda a la inclusión en un valor de atributo HTML, como en. Si el valor a citar puede incluir caracteres de comillas simples o dobles, o ambos, considere usar la función quoteattr () en el módulo xml.sax.saxutils en su lugar.
Comprobación interactiva rápida:
>>> import cgi
>>> cgi.escape('<&>')
'<&>'
>>>
Otros consejos
Saxutils tiene una función de escape para entidades XML:
>>> from xml.sax import saxutils
>>> saxutils.escape("&")
'&'