Comment puis-je traiter une chaîne de caractères au format unicode et ne pas encoder les caractères d'échappement dans en python?
Par exemple, si j'ai un unicode chaîne, je peux le coder comme un ASCII chaîne comme suit:
>>> u'\u003cfoo/\u003e'.encode('ascii')
'<foo/>'
Cependant, j'ai, par exemple, cette ASCII chaîne:
'\u003foo\u003e'
... que je veux à son tour tenu de la même ASCII chaîne comme dans mon premier exemple ci-dessus:
'<foo/>'
Vous devez vous connecter pour publier un commentaire.
Il m'a fallu un certain temps pour comprendre cela, mais cette page avait la meilleure réponse:
Il y a aussi un "raw-unicode-escape' codec pour traiter les autres de la manière d'indiquer des chaînes Unicode -- cocher la case "Unicode Constructeurs" de la section de la page pour plus de détails (car je ne suis pas Unicode-saavy).
EDIT: Voir aussi Python Standard Encodages.
Ned Batchelder dit:
En fait, cette méthode peut être faite sans danger comme suit:
L'esprit de la triple-devis chaîne et le tableau de bord juste avant la clôture 3-citations.
Donc, il n'y aurait pas besoin de s'inquiéter de ce que les utilisateurs d'entrer, tant qu'elle est saisie dans le format raw.
Sur Python 2.5 l'encodage correct est "unicode_escape", pas "unicode-escape" (notez le trait de soulignement).
Je ne sais pas si la version la plus récente de Python changé le nom unicode, mais ici seulement travaillé avec le trait de soulignement.
De toute façon, c'est ça.
À un certain point, vous allez rencontrer des problèmes lorsque vous rencontrez des caractères spéciaux comme les caractères Chinois ou des émoticônes dans une chaîne de caractères que vous souhaitez décoder c'est à dire des erreurs qui ressemblent à ceci:
Pour mon cas (twitter traitement des données), j'ai décodé comme suit pour me permettre de voir tous les personnages sans erreurs
C'est un peu dangereux selon l'endroit où la chaîne est à venir, mais que diriez-vous: