Ce n'python fonction print ()?

Je regardais ce question et a commencé à se demander quel est le print réellement faire.

Je n'ai jamais trouvé comment l'utiliser string.decode() et string.encode() pour obtenir une chaîne unicode "out" dans le python shell interactif dans le même format que le print. Peu importe ce que je fais, je reçois soit

  1. UnicodeEncodeError ou
  2. échappé à la chaîne "\x##" notation...

C'est python 2.x, mais je suis déjà en essayant de réparer mes moyens et fait appel print() 🙂

Exemple:

>>> import sys
>>> a = '\xAA\xBB\xCC'
>>> print(a)
ª»Ì
>>> a.encode(sys.stdout.encoding)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
UnicodeDecodeError: 'ascii' codec can't decode byte 0xaa in position 0: ordinal not in range(128)
>>> a.decode(sys.stdout.encoding)
u'\xaa\xbb\xcc'

MODIFIER:

Pourquoi suis-je demander? Je suis malade et fatigué de encode() erreurs et a constaté que, depuis print peuvent le faire (au moins dans le shell interactif). Je sais que le DOIT ÊTRE UN MOYEN, par magie, l'encodage CORRECTEMENT, par le creusement de l'info que l'encodage à utiliser à partir de quelque part...

INFORMATIONS SUPPLÉMENTAIRES:
Je suis en cours d'exécution Python 2.4.3 (N ° 1, Sep 3 2009, 15:37:12) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2

>>> sys.stdin.encoding
'ISO-8859-1'
>>> sys.stdout.encoding
'ISO-8859-1'

Cependant, les résultats sont les mêmes avec Python 2.6.2 (r262:71600, du 8 septembre 2009, 13:06:43) sur la même machine sous linux.

Pourriez-vous nous donner un exemple de ce que vous avez essayé, ce que tu voulais/attendre à obtenir, et ce que vous avez obtenu? Nous aiderait à mieux vous aider.
C'est la question liée à Python 2 ou 3?
Depuis, il parle de la "fonction d'impression", c'est probablement Python 3.
Oh, en fait, print(a) ne fonctionnent tous comme ce que vous montrons ici pour moi... Pourriez-vous donner la version exacte de Python que vous utilisez, ainsi que les valeurs de sys.stdin.encoding et sys.stdout.encoding dans votre environnement? Il se pourrait bien que certains de la "magie" vous essayez de répliquer se produit uniquement à cause de quelque chose de propre à votre installation... Désolé de ne pas apporter d'abord une chose, qui aurait été la chose la plus évidente à faire.
Ok, je commence à penser que c'est effectivement mon terminal, pas de python que la "magie", par exemple convertit les données binaires pour les caractères non ascii,...

OriginalL'auteur Kimvais | 2009-12-30