Converter & para & amp; em Python
Pergunta
Estou trabalhando em um rastreador simples em Python. O objetivo é criar um sitemap.xml. (Você pode encontrar a versão muito alfa aqui: http://code.google.com/p/sitemappy/) Notei que, se eu gerar o XML com URLs contendo entidades não HTML (como &), o XML não valida e não é aceito pelo Google Webmaster Tools. Existe uma maneira rápida de codificar a parte da história dos URLs?
Obrigada!
Matteo
Solução
cgi.escape
para o resgate:
cgi.escape(s[, quote])
Converta os caracteres '&', '<' e '' 'em strings S para sequências HTML-Safe. Use isso se precisar exibir o texto que possa conter esses caracteres no HTML. Se a cotação de sinalizador opcional for verdadeira, o caractere da marca de cotação ('"' ') também será traduzido; isso ajuda a inclusão em um valor de atributo HTML, como em. Se o valor a ser citado poderá incluir caracteres de uma ou duas quadras, Ou ambos, considere usar a função quteattr () no módulo xml.sax.saxutils.
Verificação interativa rápida:
>>> import cgi
>>> cgi.escape('<&>')
'<&>'
>>>
Outras dicas
Saxutils tem uma função de fuga para entidades XML:
>>> from xml.sax import saxutils
>>> saxutils.escape("&")
'&'