[Python-es] error al decodificar unicode

P@vel pdlopez en uci.cu
Vie Mar 4 15:16:52 CET 2011


"Chema Cortes" <pych3m4 en gmail.com> Escribio: 

Vamos a ver si aclaramos algunos conceptos sobre este problema: 

1) python puede trabajar "nativamente" con unicode, algo que luego debe 
codificarse según requiera la salida por la terminal. Por tanto, lo 
primero es averiguar qué codificación usa la terminal 

2) los ficheros de código pueden haberse codificado en cualquier sistema 
de codificación. La codificación utf puede usar una marca al principio del 
fichero para indicarlo, pero algunos editores de texto no saben manejarlas 
y es mejor no usarlas. Por tanto, lo segundo es indicar con un comentario 
(primera o segunda línea) en qué sistema de codificación está creado el 
fichero. Este comentario únicamente influye en cómo se interpretarán los 
literales unicode en el código (Los que aparecen como u".."). El resto del 
funcionamiento no se ve afectado (ya he dicho que python usa unicode 
"nativamente" (aka como "codepoints"). 

3) si vamos a leer ficheros de texto que no sean en ascii, se deben abrir 
con 'codecs.open' 


Si seguimos con problemas, probar con éste código (codificado en ascii): 

print u"Espa\N{LATIN SMALL LETTER N WITH TILDE}a" 

Si da error o no se lee "España" correctamente entonces tu problema NO ES 
DE PYTHON. 

*************************************************************************************************** 
A ver yo lo que estoy haciendo es cojer el html de una pagina de internet con : 
f = urllib2.urlopen(url_page) 
data = f.read() 
mi problema es que cuando parseo esto con BeautifulSoup puedo obtener cosas como esto [u'ESPAÑA'] y necesito convertir eso que esta en la lista a un str, para poder meterlo en un campo de una tabla en mi base de datos 

ya probe con hacer esto dentro de mi funcion 
def get_html(url_page="http://www.bolsamadrid.es/esp/mercados/fondos/htm/trenta100.htm"): 
proxy_h = urllib2.ProxyHandler({"http" : "http://pdlopez@hlg.uci.cu:paveling84074@100.0.0.1:3128"}) 
opener = urllib2.build_opener(proxy_h) 
urllib2.install_opener(opener) 
f = urllib2.urlopen(url_page) 

data = f.read() 
data = codecs.open(data) #Esto 
return data 
y me saca todo el codigo de la pagina y la otra funcion a la cual le paso lo que tengo en data, ahora no hace nada 

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110304/865f4ba9/attachment.html>


Más información sobre la lista de distribución Python-es