[Python-es] problema con las tildes
monoBOT
monobot.soft en gmail.com
Lun Abr 5 00:04:59 CEST 2010
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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100404/5cb5f232/attachment.html>
Más información sobre la lista de distribución Python-es