Conviertiendo caracteres Html

Oscar de Anda oscar en jornada.com.mx
Mie Dic 20 00:33:57 CET 2006


Va un ejemplo.

Es un fragmento de un artículo de La Jornada Jalisco, no se asusten

La función de mi programa devuelve esto:
     (1) Me dijo 'si te veo aquí te golpeo, y aparte te vamos a 
desaparecer '

en el Xml que cree para las pruebas pongo las entidades:
     (2) Me dijo 'si te veo aquí te golpeo, y aparte te vamos a 
desaparecer '

Para obetener el contenido del Xml lo parseo con MiniDom y me devuelve 
lo siguiente:
    (3) Me dijo 'si te veo aquí te golpeo, y aparte te vamos a desaparecer '

Si comparo (3) con (1) falla. Necesito convertir las entidades antes de 
comparar.

Al momento lo he solucionado reemplazando directamente cada una de las 
entidades xml antes de realizar la comparación (' -> ', " -> &...)

Chema, no he probado Amara, efectivamente he leido en la lista que es 
muy bueno y sencillo, yo utilizo actualmente BeautifulSoup, a mi parecer 
es bueno.

Saludos y gracias por contestar.



Luis Miguel Morillas escribió:
> Me parece que entonces está mal planteado el problema, ¿no? ¿Puedes
> poner un ejemplo de la transformación que queréis hacer? Lo que dices
> de miniDom es normal porque como bien dices los parsers de XML deben
> utilizar Unicode.
>
>
>
> El 19/12/06, Oscar de Anda<oscar en jornada.com.mx> escribió:
>> Gracias Chema, te explico brevemente.....
>>
>> Estamos realizando un programa que genera un Xml basado en el estándar
>> Nitf (nitf.org) a partir de un archivo que se exporta desde InDesign, un
>> archivo con un formato similar pero muy complejo al Xml.
>>
>> Para la unidad de pruebas, generamos un par de archivos tal y como se
>> supone que los debería de generar , los parseamos con miniDom y los
>> comparamos con cada uno de los valores que retornan las funciones del
>> programa.
>>
>> El problema que tenemos es que miniDom convierte la entidad en el
>> caracter mientras que las funciones del programa regresan la entidad lo
>> que hace que la unidad de pruebas falle.
>>
>> Con la expresión regular que mencioné anteriormente se solucionó la
>> conversión de algunas entidades haciendo que la unidad de pruebas pase,
>> pero me encontré con &apos; y quiero encontrar alguna función o módulo
>> que me permita convertir también este tipo de entidades que, como
>> mencionas y yo no sabía, son entidades Xml.
>>
>> Espero sea claro, gracias y saludos
>>
>>
>> Chema Cortes escribió:
>> > El 19/12/06, Oscar de Anda<oscar en jornada.com.mx> escribió:
>> >> Alguien sabe como puedo convertir las entidades HTML a sus caracteres
>> >> correspondientes?.
>> >>
>> >> Hasta el momento tengo solucionados los casos en que la entidad es
>> >> numérica, por ejemplo: &#8220;, &#8221;.  utilizando la función 
>> unichr.
>> >>
>> >> No sé como hacer para convertir las del tipo como &apos;, &amp;.
>> >>
>> >> Creo que en Php existía una función para eso, html_entity_decode 
>> si no
>> >> mal recuerdo
>> >
>> > En python tienes el módulo 'htmlentitydefs' con tres diccionarios que
>> > te pueden servir. Según lo que quieras hacer, el parser de html
>> > también es capaz de entender entidades, pero no precisas mucho de lo
>> > que pretendes conseguir.
>> >
>> > Por poner un ejemplo:
>> >
>> > import re
>> > from htmlentitydefs import name2codepoint
>> >
>> > pat=re.compile("&(\w+);")
>> >
>> > def repl(m):
>> >  ent=m.group(1)
>> >  if name2codepoint.has_key(ent):
>> >    return unichr(name2codepoint[ent])
>> >  else:
>> >    return u'?'  #si falla devuelve un '?'
>> >
>> > s_convertida=pat.sub(repl, "entidades &apos; y &amp;")
>> >
>> >
>> > Si te preguntas porqué no aparece el apóstrofe (&apos;) es porque no
>> > es una entidad html, sólo xml.
>> > _______________________________________________
>> > Python-es mailing list
>> > Python-es en aditel.org
>> > http://listas.aditel.org/listinfo/python-es
>> >
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en aditel.org
>> http://listas.aditel.org/listinfo/python-es
>>
>
>




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