2010-02-28 14 views
24

nuevo aquí! Soy un principiante en Python, y he estado buscando en el Python Cookbook (2nd Edition) para aprender a procesar cadenas y caracteres.No se puede usar unichr en Python 3.1

Quería tratar de convertir un número en su equivalente en Unicode. Así que he intentado usar el built-in function called 'unichr', que, de acuerdo con el libro de cocina, es algo como:

>>> print repr(unichr(8224)) 

... y seria:

u'\u2020' 

Sin embargo, el código de error. Pensé que tenía algo que ver con print (porque Python 3 usa print() en lugar de imprimir ""), pero eso no funcionó tan bien. Intenté varias variaciones al código, y todavía falló. Por fin, me acaba de escribir una línea sencilla:

unichr(10000) 

Para mi sorpresa, este mensaje de error seguía apareciendo, independientemente del valor que he puesto en la función anterior:

NameError: name 'unichr' is not defined 

¿Qué podría ser ¿el problema? ¿Hay algún módulo específico que se supone que debo importar?

+1

Solo un consejo: podría y debería haber mencionado el mensaje de error justo después de "el código falló". Siempre tenga en cuenta el mensaje de error que Python da (y el mensaje de error * exact *, no de memoria), y menciónelo temprano. –

+0

Gracias por el consejo, definitivamente lo recordaré. – anonnoir

Respuesta

39

En Python 3, que sólo tiene que utilizar CHR:

>>> chr(10000) 
'✐' 
3

Python 3.x no tiene un tipo de cadena Unicode/clase especial. Cada cadena es una cadena Unicode. Entonces ... probaría chr. Debe darle lo que unichr hizo antes de 3.x. No puedo probar, por desgracia.

11

En Python 3, ya no hay diferencia entre cadenas unicode y normales. Solo entre cadenas unicode y datos binarios. Entonces los desarrolladores finalmente eliminaron la función unichr en favor de una chr común que ahora hace lo que hizo el viejo unichr. Consulte la documentación here.

+0

Gracias. Traté de publicar una pregunta relacionada en esta área de comentarios, pero no se llenará correctamente, así que la publiqué a continuación. (Espero no haber tropezado con las reglas del sitio al hacerlo). – anonnoir

+0

Todavía hay dos tipos de cadenas. Lo que 2.x llama 'unicode', 3.x llama' str' (con cambios triviales). Lo que 2.x llama 'str', 3.x llama' bytes' (con cambios moderados). –