Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Problema con unicode

Estas en el tema de Problema con unicode en el foro de Python en Foros del Web. Estoy empezando a hacer una especie de SIRI con speech pero cuando intento comparar una string con algo sacado del text2speech me da error de ...
  #1 (permalink)  
Antiguo 02/02/2014, 14:24
 
Fecha de Ingreso: noviembre-2013
Mensajes: 61
Antigüedad: 10 años, 6 meses
Puntos: 0
Problema con unicode

Estoy empezando a hacer una especie de SIRI con speech pero cuando intento comparar una string con algo sacado del text2speech me da error de unicode:
Cita:
Warning (from warnings module):
File "D:\Desktop\Nuevo documento de texto.py", line 8
if spoken == "Música":
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
Código:
Código Python:
Ver original
  1. import speech
  2. import os
  3. drectorio_musica = '"D:\Desktop\Isix\Música\"'
  4. ficheros = os.listdir('D:\Desktop\Isix\Música')
  5. hablar = speech.say("Hola")
  6. spoken = speech.input('Ejecutar orden:')
  7. print spoken
  8. if spoken == "Música":
  9.     cancion = speech.say("¿Que canción quieres reproducir?")

Un saludo
  #2 (permalink)  
Antiguo 02/02/2014, 16:12
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 3 meses
Puntos: 1360
Respuesta: Problema con unicode

Tienes que ponerle que encoding usas al principio del archivo.

Código:
# -*- coding: <encoding name> -*-
Tal como lo indica el PEP 263.


Y usa raw strings, si no esos \ seran interpretados como caracteres de escape.

Código Python:
Ver original
  1. import speech
  2. import os
  3. drectorio_musica = r'"D:\Desktop\Isix\Música\"'
  4. ficheros = os.listdir(r'D:\Desktop\Isix\Música')
  5. hablar = speech.say("Hola")
  6. spoken = speech.input('Ejecutar orden:')
  7. print spoken
  8. if spoken == "Música":
  9.     cancion = speech.say("¿Que canción quieres reproducir?")
  #3 (permalink)  
Antiguo 03/02/2014, 13:23
 
Fecha de Ingreso: noviembre-2013
Mensajes: 61
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Problema con unicode

Me sigue tirando el mismo problema,alguna idea?
  #4 (permalink)  
Antiguo 03/02/2014, 13:25
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 3 meses
Puntos: 1360
Respuesta: Problema con unicode

Y el nuevo código?
  #5 (permalink)  
Antiguo 03/02/2014, 13:34
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 3 meses
Puntos: 1360
Respuesta: Problema con unicode

Ok aquí esta un código que reproduce tu error:

Código Python:
Ver original
  1. # coding: utf-8
  2.  
  3. a = 'ñ'
  4. b = u'ñ'
  5.  
  6. a == b

Vamos a ver porque:
Código Python:
Ver original
  1. print a.__class__, b.__class__
  2. # <type 'str'> <type 'unicode'>
Bueno, ahí lo tienes estas comparando cadenas de diferentes tipos.

Lo que puedes hacer es poner tu cadena como unicode.
Código Python:
Ver original
  1. if spoken == u"Música":
Y listo

La verdad es que te recomendaría aprender mas sobre cadenas en python y unicode. Porque esto sera un paso importante en python 3.
  #6 (permalink)  
Antiguo 04/02/2014, 15:21
 
Fecha de Ingreso: noviembre-2013
Mensajes: 61
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Problema con unicode

jajajajaj!Muchas gracias problema solucionado!Probé a ponerle que era unicode de mil maneras antes de preguntar por aquí,algo haría mal!Gracias!

Un saludo!

Etiquetas: unicode
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:19.