2010-02-28 8 views
24

nouveau ici! Je suis un débutant en Python, et j'ai regardé à travers le Python Cookbook (2e édition) pour apprendre à traiter les chaînes et les caractères.Impossible d'utiliser unichr en Python 3.1

Je voulais essayer de convertir un nombre en son équivalent Unicode. Alors j'ai essayé d'utiliser la built-in function called 'unichr', qui, d'après le livre de recettes, va quelque chose comme:

>>> print repr(unichr(8224)) 

... et sortira:

u'\u2020' 

Cependant, le code a échoué. Je pensais que cela avait quelque chose à voir avec imprimer (parce que Python 3 utilise print() au lieu d'imprimer ""), mais cela n'a pas fonctionné aussi bien. J'ai essayé plusieurs variantes du code, et cela a échoué. Enfin, je viens tapé une ligne simple:

unichr(10000) 

À ma grande surprise, ce message d'erreur maintenu apparaître, peu importe la valeur que je mets dans la fonction ci-dessus:

NameError: name 'unichr' is not defined 

Quoi le problème? Y a-t-il un module spécifique que je suis censé importer?

+1

Juste un conseil: vous pourriez et devriez avoir mentionné le message d'erreur juste après "le code a échoué." Notez toujours le message d'erreur fourni par Python (et le message d'erreur * exact *, pas de la mémoire) et mentionnez-le tôt. –

+0

Merci pour le conseil, je vais certainement garder cela à l'esprit. – anonnoir

Répondre

39

En Python 3, vous utilisez juste chr:

>>> chr(10000) 
'✐' 
3

3.x Python ne dispose pas d'un type de chaîne Unicode spéciale/classe. Chaque chaîne est une chaîne Unicode. Donc ... j'essaierais chr. Doit vous donner ce que unichr a fait pré-3.x. Je ne peux pas tester, malheureusement.

11

En Python 3, il n'y a plus de différence entre les chaînes Unicode et normales. Seulement entre les chaînes Unicode et les données binaires. Donc, les développeurs ont finalement supprimé la fonction unichr en faveur d'un commun chr qui fait maintenant ce que l'ancien unichr a fait. Voir la documentation here.

+0

Merci. J'ai essayé de poster une question connexe dans cette zone de commentaires, mais elle ne se remplira pas correctement, alors je l'ai posté ci-dessous. (J'espère que je ne suis pas allé à l'encontre des règles du site en le faisant.) – anonnoir

+0

Il existe encore deux types de chaînes de caractères. Quel 2.x appelle 'unicode', 3.x appelle' str' (avec des changements triviaux). 2.x appelle 'str', 3.x appelle' bytes' (avec des changements modérés). –

Questions connexes