[Python-es] problema con las tildes
monoBOT
monobot.soft en gmail.com
Lun Abr 5 00:15:31 CEST 2010
´Funciona como un guante!!! ... muchas gracias luis miguel
El 4 de abril de 2010 23:04, monoBOT <monobot.soft en gmail.com> escribió:
> Muchas gracias lo probare.
>
> El 4 de abril de 2010 22:38, Luis Miguel Morillas <morillas en gmail.com>escribió:
>
> El día 4 de abril de 2010 10:26, monoBOT <monobot.soft en gmail.com>
>> escribió:
>> > la línea 83 está en la función de grabado:
>> > def grabar(self, event):
>> > dialogo=wx.MessageDialog(None, '¿Desea Grabar y Salir?',
>> 'Atención',
>> > wx.YES_NO|wx.ICON_QUESTION|wx.STAY_ON_TOP)
>> > respuesta=dialogo.ShowModal()
>> > if (respuesta ==wx.ID_YES):
>> > print 'obteniendo valores...'
>> > nombres_attr = ['numerocolegiado','nombre',
>> 'primerapellido',
>> > 'segundoapellido', 'dni', 'direccion', 'codigopostal', 'poblacion',
>> 'email',
>> > 'telefono1', 'telefono2']
>> > datos_entrados = [self.ventana.entranumcol,
>> > self.ventana.entranombre, self.ventana.entraapellido1,
>> > self.ventana.entraapellido2, self.ventana.entradni,
>> self.ventana.entradirec,
>> > self.ventana.entrapost, self.ventana.entrapobl, self.ventana.entraemail,
>> > self.ventana.entratf1, self.ventana.entratf2]
>> > print 'guardando...'
>> > for m in range(len(datos_entrados)):
>> > cambia_attrib(arbol='usuario', dato=nombres_attr[m],
>> > nuevovalor=reg_xml(datos_entrados[m].GetValue()))
>> > nom_empr = ['nombreempresa', 'cifempresa',
>> > 'direccionempresa','codigopostalempresa', 'telefonoempresa']
>> > dat_empr = [self.ventana.entranombreempresa,
>> > self.ventana.entracifempresa, self.ventana.entradireccionempresa,
>> > self.ventana.entracodigopostalempresa,
>> self.ventana.entratelefonoempresa]
>> > for m in range(len(nom_empr)):
>> > cambia_attrib(arbol='datosempresa', dato=nom_empr[m],
>> > nuevovalor=reg_xml(dat_empr[m].GetValue()))
>> > cambia_attrib('usuario', 'colegio',
>> > reg_xml(self.ventana.entracolegio.GetStringSelection()))
>> > cambia_attrib('usuario', 'provincia',
>> > reg_xml(self.ventana.entraprov.GetStringSelection()))
>> > guarda_datos(datogral)
>> > print 'guardado'
>> > self.Destroy()
>> > else:
>> > print 'Cancelado'
>> > dialogo.Destroy()
>> > la función de grabado lo que hace es llamar a unas
>> > variables self.ventana.entranombreempresa todas ellas se montan de
>> esta
>> > forma:
>> > self.ventana.entranombre = wx.TextCtrl(self.ventana, -1,
>> nombre_en_fichero)
>> > y el valor por defecto de cada una proviene del fichero xml también:
>> > nombre_en_fichero = xml_none(busqueda_xml ('usuario', 'nombre'))
>> > así que lo que hago es:
>> > lee xml ---> muestra en pantalla el dato guardado ---> el usuario cambia
>> los
>> > datos ---> grabo los datos.
>> > las funciones de lectura y guardado de xml son:
>> > def busqueda_xml (arbol, dato):
>> > valor =
>> >
>> arbol_gral.getElementsByTagName(arbol)[0].getElementsByTagName(dato)[0].childNodes[0].nodeValue
>> > return valor
>> > def guarda_datos(archivo):
>> > fichero = open(os.path.realpath(archivo), "w")
>> > arbol_gral.writexml(fichero, encoding='iso-8859-1')
>> > fichero.close()
>> > return True
>>
>> El error lo genera writexml en esta función. Yo no utilizo minidom,
>> pero supongo que esto te funcionará:
>>
>> import codecs # esto ponlo al principio del fichero
>>
>> def guarda_datos(archivo):
>> fichero = codecs.open(os.path.realpath(archivo), "w", 'iso-8859-1')
>> arbol_gral.writexml(fichero, encoding='iso-8859-1')
>> fichero.close()
>> return True
>>
>> Si quieres utilizar tu código en un sistema en producción, habría que
>> revisar algunas cosas. Yo te recomiendo utilizar otros módulos en
>> lugar de minidom. Echa un vistazo a Amara
>> (http://wiki.xml3k.org/Amara2), te permite manejar xml como si fueran
>> objetos python.
>>
>> --lm
>>
>> > la funcion xml_none lo que hace es cambiar una entrada igual a cero por
>> un
>> > campo limpio
>> > def xml_none(m):
>> > if m =='0':
>> > n = ''
>> > return n
>> > return m
>> > la función contraria la pongo al grabar y lo que hace es convertir un
>> campo
>> > vacío en un 0, y también los caracteres prohibidos por xml por sus
>> sutitutos
>> > ... así evito el error al grabar.
>> >
>> > def reg_xml(m):
>> > if m == '':
>> > n = '0'
>> > return n
>> > n = m.replace('&', '&')
>> > n = n.replace('<','<')
>> > n = n.replace('>','>')
>> > return n
>> >
>> > --
>> > monobotblog.alvarezalonso.es
>> > _______________________________________________
>> > Python-es mailing list
>> > Python-es en python.org
>> > http://mail.python.org/mailman/listinfo/python-es
>> > FAQ: http://python-es-faq.wikidot.com/
>> >
>> >
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>
>
>
> --
> Héctor Alvarez
> Arquitecto
>
> Advertencia legal:
> De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de
> carácter Personal le informamos que:
> Este correo electrónico contiene información privada y estrictamente
> confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo,
> directa o indirectamente, usar, revelar, distribuir, imprimir o copiar
> ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido
> este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail
> y proceda a borrar de su sistema inmediatamente el mensaje así como todas
> sus copias.
>
--
Héctor Alvarez
Arquitecto
Advertencia legal:
De acuerdo a la vigente Ley Orgánica 15/1999 de Protección de Datos de
carácter Personal le informamos que:
Este correo electrónico contiene información privada y estrictamente
confidencial. Si usted NO ES el destinatario, NO ESTA AUTORIZADO a leerlo,
directa o indirectamente, usar, revelar, distribuir, imprimir o copiar
ninguna de las partes y/o anexos de éste mensaje. Si por error ha recibido
este mensaje, le rogamos lo notifique a su emisor respondiendo a éste e-mail
y proceda a borrar de su sistema inmediatamente el mensaje así como todas
sus copias.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100404/c5fb849d/attachment.html>
Más información sobre la lista de distribución Python-es