Comment convertir les séquences d'échappement unicode à caractères unicode dans une chaîne de python

StackOverflow https://stackoverflow.com/questions/990169

  •  13-09-2019
  •  | 
  •  

Question

Quand j'ai essayé d'obtenir le contenu d'une balise en utilisant "unicode (head.contents [3])" i obtenir une sortie similaire à ceci: "Christensen Sk \ xf6ld". Je veux que la séquence d'échappement à retourner sous forme de chaîne. Comment faire en python?

Était-ce utile?

La solution

En supposant Python voit le nom comme une chaîne normale, vous devez d'abord décoder à unicode:

>>> name
'Christensen Sk\xf6ld'
>>> unicode(name, 'latin-1')
u'Christensen Sk\xf6ld'

Une autre façon d'y parvenir:

>>> name.decode('latin-1')
u'Christensen Sk\xf6ld'

Notez le « u » en face de la chaîne, la signalisation est Décoder. Si vous imprimez, la lettre est affichée correctement accentuée:

>>> print name.decode('latin-1')
Christensen Sköld

BTW: quand la méthode nécessaire, vous pouvez utiliser de « encode » pour mettre l'unicode en exemple une chaîne de caractères UTF-8:

>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'

Autres conseils

une chaîne d'octets avec Unicode échappe b"\N{SNOWMAN}", b"\N{SNOWMAN}".decode('unicode-escape) produira la chaîne Unicode attendue u'\u2603'.

Je pense que cela fonctionne correctement acutally. Par défaut, Python affiche des chaînes dans le codage ASCII, car tous les terminaux prennent en charge unicode. Si vous imprimez en fait la chaîne, cependant, il devrait fonctionner. Voir l'exemple suivant:

>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top