Foros del Web » Programando para Internet » Python »

Problema con codificacion de caracteres.

Estas en el tema de Problema con codificacion de caracteres. en el foro de Python en Foros del Web. Estoy usando urllib2 y minidom de xml para leer y pasear partes de una pagina. Pero me tope que cierta parte de una pagina tiene ...
  #1 (permalink)  
Antiguo 03/10/2011, 19:39
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Problema con codificacion de caracteres.

Estoy usando urllib2 y minidom de xml para leer y pasear partes de una pagina. Pero me tope que cierta parte de una pagina tiene el siguiente caracter: ° y entonces el minidom falla al parsear la pagina.

Mi pregunta es como hago para eliminar ese caracter, y algun otro caracter que se puede interponer??

Se que es problema del Unicode y del ASCII, probe un par de metodos casetos que encontre por otros lados pero no logre dar en la tecla.

Saludos
  #2 (permalink)  
Antiguo 03/10/2011, 19:49
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema con codificacion de caracteres.

Encontré este link "How to use UTF-8 with Python" y tiene un apartado con el minidom.

En pocas palabras solo maneja "cadenas byte" o cadenas a secas. Si tratas de pasarle una cadena unicode entonces el minidom de python fallara miserablemente. Para evitar eso tienes que pasar la cadena unicode a una "cadena de bytes" y pasarselo al minidom y ademas que el xml tenga la declaración del encoding.

Edito para saber si es una cadena unicode o un cadena a secas puedes usar la función type.

Ejemplo
Código Python:
Ver original
  1. u = u"Unicode string"
  2. s = "byte string"
  3. print type(u)
  4. print type(s)

Etiquetas: codificacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.