<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Python: Escapar caracteres especiais em HTML (entities)</title>
	<atom:link href="http://codare.net/2006/09/17/python-escapar-caracteres-especiais-em-html-entities/feed/" rel="self" type="application/rss+xml" />
	<link>http://codare.net/2006/09/17/python-escapar-caracteres-especiais-em-html-entities/</link>
	<description>Programadores, uni-vos!</description>
	<lastBuildDate>Thu, 19 Jan 2012 11:51:37 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Sabir</title>
		<link>http://codare.net/2006/09/17/python-escapar-caracteres-especiais-em-html-entities/#comment-10944</link>
		<dc:creator>Sabir</dc:creator>
		<pubDate>Sun, 02 Oct 2011 19:57:42 +0000</pubDate>
		<guid isPermaLink="false">http://codare.wordpress.com/2006/09/17/escapar-caracteres-especiais-em-html/#comment-10944</guid>
		<description>Oi Nilton,
muito legal o seu tutorial :)

Mas na última linha da função htmlunescape acho que você quiz dizer &#039;(&amp;\\w+;)&#039; em vez de &#039;(&amp;\\\\w+;)&#039;</description>
		<content:encoded><![CDATA[<p>Oi Nilton,<br />
muito legal o seu tutorial :)</p>
<p>Mas na última linha da função htmlunescape acho que você quiz dizer &#8216;(&amp;\\w+;)&#8217; em vez de &#8216;(&amp;\\\\w+;)&#8217;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Giuliani Sanches</title>
		<link>http://codare.net/2006/09/17/python-escapar-caracteres-especiais-em-html-entities/#comment-10</link>
		<dc:creator>Giuliani Sanches</dc:creator>
		<pubDate>Wed, 13 Jun 2007 11:27:03 +0000</pubDate>
		<guid isPermaLink="false">http://codare.wordpress.com/2006/09/17/escapar-caracteres-especiais-em-html/#comment-10</guid>
		<description>ou ainda:

import xml.sax.saxutils as saxutils

saxutils.escape(&quot;&amp;&quot;)
&#039;&amp;&#039;

saxutils.unescape(&quot;&gt;&quot;)
&#039;&gt;&#039;</description>
		<content:encoded><![CDATA[<p>ou ainda:</p>
<p>import xml.sax.saxutils as saxutils</p>
<p>saxutils.escape(&#8220;&amp;&#8221;)<br />
&#8216;&amp;&#8217;</p>
<p>saxutils.unescape(&#8220;&gt;&#8221;)<br />
&#8216;&gt;&#8217;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Giuliani Sanches</title>
		<link>http://codare.net/2006/09/17/python-escapar-caracteres-especiais-em-html-entities/#comment-9</link>
		<dc:creator>Giuliani Sanches</dc:creator>
		<pubDate>Wed, 13 Jun 2007 11:16:54 +0000</pubDate>
		<guid isPermaLink="false">http://codare.wordpress.com/2006/09/17/escapar-caracteres-especiais-em-html/#comment-9</guid>
		<description>Estava olhando a documentação do python e aqui

http://docs.python.org/lib/node563.html

Mostra que dentro do módulo cgi existe uma função escape para fazer isso.  Só não achei uma unescape :)</description>
		<content:encoded><![CDATA[<p>Estava olhando a documentação do python e aqui</p>
<p><a href="http://docs.python.org/lib/node563.html" rel="nofollow">http://docs.python.org/lib/node563.html</a></p>
<p>Mostra que dentro do módulo cgi existe uma função escape para fazer isso.  Só não achei uma unescape :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: chronos</title>
		<link>http://codare.net/2006/09/17/python-escapar-caracteres-especiais-em-html-entities/#comment-8</link>
		<dc:creator>chronos</dc:creator>
		<pubDate>Mon, 26 Feb 2007 20:42:57 +0000</pubDate>
		<guid isPermaLink="false">http://codare.wordpress.com/2006/09/17/escapar-caracteres-especiais-em-html/#comment-8</guid>
		<description>tem algo como get_html_translation_table do php em python?

ele retorna em php um array associando &#039;ç&#039; =&gt; &#039;&amp;ccdil;&#039; por exemplo.

com isso fica fácil pq ai é um S.replace() :).</description>
		<content:encoded><![CDATA[<p>tem algo como get_html_translation_table do php em python?</p>
<p>ele retorna em php um array associando &#8216;ç&#8217; =&gt; &#8216;&ccdil;&#8217; por exemplo.</p>
<p>com isso fica fácil pq ai é um S.replace() :).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nilton Volpato</title>
		<link>http://codare.net/2006/09/17/python-escapar-caracteres-especiais-em-html-entities/#comment-7</link>
		<dc:creator>Nilton Volpato</dc:creator>
		<pubDate>Mon, 18 Dec 2006 17:59:53 +0000</pubDate>
		<guid isPermaLink="false">http://codare.wordpress.com/2006/09/17/escapar-caracteres-especiais-em-html/#comment-7</guid>
		<description>Alfredo,

Para fazer o unescape seria melhor um solução desse tipo:

from htmlentitydefs import name2codepoint as n2cp
import re

entity_re = re.compile(&#039;&amp;(#?)(\d{1,5}&#124;\w{1,8});&#039;)

def substitute_entity(match):
   ent = match.group(2)
   if match.group(1) == &#039;#&#039;:
       return unichr(int(ent))
   else:
       cp = n2cp.get(ent)
       if cp:
           return unichr(cp)
       else:
           return match.group()

def decode_htmlentities(string):
   return entity_re.subn(substitute_entity, string)[0]

Esse código, a princípio pode retornar uma string unicode, o que é mais correto. Veja que ainda existe o caso &amp;#número; que o seu código não trata. Veja:

&gt;&gt;&gt; htmlunescape(&#039;&#233; &#227; &#195; &#12354;&#039;)
&#039;\xe9 \xe3 \xc3 &#12354;&#039;

Já esse código:

&gt;&gt;&gt; decode_htmlentities(&#039;&#233; &#227; &#195; &#12354;&#039;)
u&#039;\xe9 \xe3 \xc3 \u3042&#039;

Não testei, mas acho também que essa versão usando re.subn é bem mais eficiente do que fazer um re.split e depois concatenar novamente.

Abraços,
-- Nilton</description>
		<content:encoded><![CDATA[<p>Alfredo,</p>
<p>Para fazer o unescape seria melhor um solução desse tipo:</p>
<p>from htmlentitydefs import name2codepoint as n2cp<br />
import re</p>
<p>entity_re = re.compile(&#8216;&amp;(#?)(\d{1,5}|\w{1,8});&#8217;)</p>
<p>def substitute_entity(match):<br />
   ent = match.group(2)<br />
   if match.group(1) == &#8216;#&#8217;:<br />
       return unichr(int(ent))<br />
   else:<br />
       cp = n2cp.get(ent)<br />
       if cp:<br />
           return unichr(cp)<br />
       else:<br />
           return match.group()</p>
<p>def decode_htmlentities(string):<br />
   return entity_re.subn(substitute_entity, string)[0]</p>
<p>Esse código, a princípio pode retornar uma string unicode, o que é mais correto. Veja que ainda existe o caso &amp;#número; que o seu código não trata. Veja:</p>
<p>&gt;&gt;&gt; htmlunescape(&#8216;&eacute; &atilde; &Atilde; &#12354;&#8217;)<br />
&#8216;\xe9 \xe3 \xc3 &#12354;&#8217;</p>
<p>Já esse código:</p>
<p>&gt;&gt;&gt; decode_htmlentities(&#8216;&eacute; &atilde; &Atilde; &#12354;&#8217;)<br />
u&#8217;\xe9 \xe3 \xc3 \u3042&#8242;</p>
<p>Não testei, mas acho também que essa versão usando re.subn é bem mais eficiente do que fazer um re.split e depois concatenar novamente.</p>
<p>Abraços,<br />
&#8211; Nilton</p>
]]></content:encoded>
	</item>
</channel>
</rss>

