2 votes

Décoder un caractère en Python (YouTube Data API)

J'utilise l'API de données YouTube pour obtenir les titres de certaines musiques. Mais lorsque j'obtiens le titre et que je l'imprime, le titre ressemble à des caractères Unicode. Par exemple :

#music title: Røyksopp
print(title)
#Output: R\u00f6yksopp

Ou bien :

#music title: Nurse's
print(title)
#Output: Nurse's

Pourquoi est-ce que je reçois ce message et comment y remédier ?

2voto

wim Points 35274

Il ne s'agit pas d'un encodage mais d'un échappement :

>>> import html
>>> html.unescape("Nurse's")
"Nurse's"

L'autre est déjà décodée, il n'y a rien à faire :

>>> "R\u00f6yksopp"
'Röyksopp'

Si vous voyez toujours des caractères ASCII au lieu de textes accentués, il se peut que vous (ou votre bibliothèque client) ayez manqué une étape de dé-sérialisation json quelque part :

>>> json.loads('"\\u00f6"')
'ö'

1voto

stvar Points 4752

Tout d'abord, veuillez reconnaître que ce que vous avez obtenu de l'API n'est pas (citation de vous) Caractères Unicode. Pour être techniquement précis, ces séquences de caractères sont les suivantes Références de caractères HTML également connu sous le nom de Entités HTML .

Le comportement que vous avez rencontré est un Question bien connue de l'API pour lesquels il n'y a pas d'autre solution à ma connaissance, si ce n'est que vous devez vous-même remplacer ces entités HTML par les caractères qu'elles représentent.

Dans le contexte de Python 3, vous pourriez très bien utiliser la fonction html.unescape qui fait partie de html module :

import html
print(html.unescape(title))

Ce code produira Nurse's quand title es Nurse's .


En ce qui concerne votre production R\u00f6yksopp veuillez afficher le contexte du code qui interroge l'API, afin de voir pourquoi l'option \uXXXX séquences d'échappement ne sont pas traitées correctement par votre programme. Vous pouvez également indiquer l'identifiant de la vidéo qui a produit ce résultat, afin que je puisse le vérifier moi-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X