web-dev-qa-db-fra.com

Impossible d'utiliser unichr dans Python 3.1

J'ai parcouru le livre de recettes Python (2e édition) pour savoir comment traiter les chaînes et les caractères.

Je voulais essayer de convertir un nombre en son équivalent Unicode. J'ai donc essayé d'utiliser la fonction intégrée appelée ' unichr ' , qui, selon le livre de recettes, ressemble à:

>>> print repr(unichr(8224))

... et affichera:

u'\u2020'

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

unichr(10000)

À ma grande surprise, ce message d'erreur a continué à apparaître, quelle que soit la valeur que je mette dans la fonction ci-dessus:

 NameError: name 'unichr' is not defined

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

49
anonnoir

Dans Python 3, vous utilisez simplement chr :

>>> chr(10000)
'✐'
65
Mark Byers

Dans 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. Ainsi, les développeurs ont finalement supprimé la fonction unichr au profit d'une commune chr qui fait maintenant ce que faisait l'ancien unichr. Voir la documentation ici .

17
AndiDog

Python 3.x n'a pas de type/classe de chaîne Unicode spécial. Chaque chaîne est une chaîne Unicode. Alors ... j'essaierais chr. Devrait vous donner ce que unichr faisait avant 3.x. Impossible de tester, malheureusement.

4
Jürgen A. Erhard

Dans le cas où vous devez exécuter les deux python 2 et python 3, vous pouvez utiliser cette syntaxe commune (la syntaxe inutilisée pointerait vers la nouvelle))

try:
    unichr
except NameError:
    unichr = chr
2
mork