Domingo 22 de Diciembre de 2024, 18:19
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
Python
(Moderador:
arielb
) »
Caracteres acentuados
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Caracteres acentuados (Leído 2849 veces)
jp_lujan
Nuevo Miembro
Mensajes: 6
Caracteres acentuados
«
en:
Martes 3 de Agosto de 2010, 08:47 »
0
Hola, soy bastante novato en python, necesitaría de ayuda con la siguiente cuestión tengo una tabla en la que en una de las celdas me aparece el Path de un fichero, el programa funciona bién hasta que en ese path aparece un carácter acentuado ya sea mayúscula o minúscula. he puesto el coding en la cabecera pero me sigue sin funcionar.
Dejo el código por si alguien pudiera ayudarme
Código: Python
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import
sys
import
os
from
PyQt4
import
QtCore
from
PyQt4
import
QtGui
from
PyQt4
import
QtSql
from
gui
import
Ui_MainWindow
class
Programa
(
QtGui.
QMainWindow
)
:
def
__init__
(
self
,
parent
=
None
)
:
QtGui.
QWidget
.
__init__
(
self
,
parent
)
self
.
modelo
=
self
.
generaModelo
(
)
self
.
ui
=
Ui_MainWindow
(
)
self
.
ui
.
setupUi
(
self
)
self
.
ui
.
tabla
.
setModel
(
self
.
modelo
)
self
.
reajusta
(
)
QtCore.
QObject
.
connect
(
self
.
ui
.
action_Salir
,
QtCore.
SIGNAL
(
"activated()"
)
,
QtGui.
qApp
,
QtCore.
SLOT
(
"quit()"
)
)
QtCore.
QObject
.
connect
(
self
.
ui
.
Refrescar
,
QtCore.
SIGNAL
(
"clicked()"
)
,
self
.
refrescar
)
QtCore.
QObject
.
connect
(
self
.
ui
.
Nuevalinea
,
QtCore.
SIGNAL
(
"clicked()"
)
,
self
.
nuevaLinea
)
QtCore.
QObject
.
connect
(
self
.
ui
.
eliminarLinea
,
QtCore.
SIGNAL
(
"clicked()"
)
,
self
.
eliminarLinea
)
QtCore.
QObject
.
connect
(
self
.
ui
.
abrirDoc
,
QtCore.
SIGNAL
(
"clicked()"
)
,
self
.
abrirDoc
)
def
generaModelo
(
self
)
:
self
.
conectaDB
(
)
modelo
=
QtSql.
QSqlTableModel
(
None
,
self
.
db
)
modelo.
setTable
(
'accesos'
)
modelo.
setSort
(
self
.
recordPrototipo
.
indexOf
(
'idAcceso'
)
,
QtCore.
Qt
.
AscendingOrder
)
modelo.
select
(
)
return
modelo
def
conectaDB
(
self
)
:
self
.
db
=
QtSql.
QSqlDatabase
.
addDatabase
(
'QSQLITE'
)
self
.
db
.
setHostName
(
''
)
self
.
db
.
setDatabaseName
(
'Accesos2.db'
)
self
.
db
.
setUserName
(
''
)
self
.
db
.
setPassword
(
''
)
name
=
self
.
db
.
open
(
)
query
=
QtSql.
QSqlQuery
(
'select * from accesos'
,
self
.
db
)
self
.
recordPrototipo
=
query.
record
(
)
def
reajusta
(
self
)
:
self
.
ui
.
tabla
.
resizeColumnsToContents
(
)
def
nuevaLinea
(
self
)
:
fila
=
self
.
modelo
.
rowCount
(
)
self
.
modelo
.
insertRow
(
fila
)
self
.
reajusta
(
)
def
eliminarLinea
(
self
)
:
index
=
self
.
ui
.
tabla
.
currentIndex
(
)
fila
=
index.
row
(
)
id
=
self
.
modelo
.
data
(
self
.
modelo
.
index
(
fila
,
self
.
recordPrototipo
.
indexOf
(
'idAcceso'
)
)
)
.
toString
(
)
nombre
=
self
.
modelo
.
data
(
self
.
modelo
.
index
(
fila
,
self
.
recordPrototipo
.
indexOf
(
'Ruta'
)
)
)
.
toString
(
)
if
QtGui.
QMessageBox
.
question
(
self
,
'Borrar linea'
,
QtCore.
QString
(
"¿Desea borrar el producto #%1, #%2?"
)
.
arg
(
idAcceso
)
.
arg
(
Ruta
)
,
QtGui.
QMessageBox
.
Yes
|QtGui.
QMessageBox
.
No
)
==
QtGui.
QMessageBox
.
Yes
:
self
.
modelo
.
removeRow
(
fila
)
self
.
reajusta
(
)
def
refrescar
(
self
)
:
self
.
modelo
.
select
(
)
def
abrirDoc
(
self
)
:
index
=
self
.
ui
.
tabla
.
currentIndex
(
)
fila
=
index.
row
(
)
## La línea donde tiene recogido el PATH, tambien he probado a poner 'u' delante de la cadena
nombre
=
self
.
modelo
.
data
(
self
.
modelo
.
index
(
fila
,
self
.
recordPrototipo
.
indexOf
(
'Ruta'
)
)
)
.
toString
(
)
os
.
startfile
(
nombre
)
if
__name__
==
'__main__'
:
app
=
QtGui.
QApplication
(
sys
.
argv
)
myapp
=
Programa
(
)
myapp.
show
(
)
sys
.
exit
(
app.
exec_
(
)
)
Tweet
Zyntaxis
Nuevo Miembro
Mensajes: 8
Re: Caracteres acentuados
«
Respuesta #1 en:
Martes 3 de Agosto de 2010, 22:02 »
0
Perdona ya se que no tiene nada que ver pero ¿como has hecho para poner el codigo de esa manera?
Saludos y espero que alguien te ayude
jp_lujan
Nuevo Miembro
Mensajes: 6
Re: Caracteres acentuados
«
Respuesta #2 en:
Miércoles 4 de Agosto de 2010, 08:14 »
0
No entiendo lo que quieres decir
rive08
Nuevo Miembro
Mensajes: 11
Re: Caracteres acentuados
«
Respuesta #3 en:
Miércoles 4 de Agosto de 2010, 13:51 »
0
Buen día jp_lujan,
No se si solucionará tu problema, admito que no leí todo tu código, pero, por lo que contás al principio, creo que estás confundiendo un poco las cosas. Con
Cita de: "jp_lujan"
he puesto el coding en la cabecera pero me sigue sin funcionar.
, lo que declaras es el "encoding" de tu "código fuente". . . es decir, estás declarando que en tu código vas a utilizar caracteres NO-ASCII, de acuerdo al encoding declarado. (ejemplo en los comentarios, o en el código podrías utilizar las 'ñ' y los ´)
Para más información, visitar pep-0263 de python.org (todavía no puedo postear urls así que, no te puedo dejar el link :-P)
Ahora bien, para que el intérprete sepa cómo debe tratar tus cadenas de caracteres es otro tema:
Como dije anteriormente, no estoy con mucho tiempo, así que no pude leer tu código, te dejo una receta que dio Iñigo Serna en la lista Python-es sobre este tema:
[lo siguiente es válido para python v2.x, en python v3.x cambia]
Trabaja internamente siempre con unicode y cuando tengas que mostrar
algo, codifícalo, p.e. en UTF-8:
>>> a = u'eñe' # fíjate en la u que antecede a la cadena
>>> type(a)
<type 'unicode'>
>>> print a.encode('utf-8')
eñe
>>>
Espero te sirva de algo,
Y, si para el fin de semana todavía no has encontrado tu solución, prometo revisar tu código (no soy más que un principiante en python, pero descubrí que, ayudando a solucionar problemas de los demás, aprendo más que con los libros :-P)
Saludos,
Rive
Zyntaxis
Nuevo Miembro
Mensajes: 8
Re: Caracteres acentuados
«
Respuesta #4 en:
Miércoles 4 de Agosto de 2010, 23:20 »
0
En poner el código en esa ventanita con el formato de python
jp_lujan
Nuevo Miembro
Mensajes: 6
Re: Caracteres acentuados
«
Respuesta #5 en:
Viernes 6 de Agosto de 2010, 08:11 »
0
Zyntaxis:
Lo del codigo fue tan sencillo como copiar y pegar el texto, previamente he seleccionado Code=Python en el cuadro de enviar post y he pegado el texto entre los
[ code=python]****pegar texto aquí****[/code ].
Rive08:
Gracias por tu respuesta pero no sé como decodificar la cadena.
Seguiré intentando, de nuevo gracias
Zyntaxis
Nuevo Miembro
Mensajes: 8
Re: Caracteres acentuados
«
Respuesta #6 en:
Domingo 8 de Agosto de 2010, 00:24 »
0
ok gracias!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
Python
(Moderador:
arielb
) »
Caracteres acentuados