8
votes

Personnages sans-peine dans une chaîne de réponse JSON

J'ai fait une demande JSON qui me donne une chaîne qui utilise Codes de caractères Unicode qui a l'air Comme: xxx

et je veux le convertir en: xxx

Quelle est la meilleure façon de le faire à Python?

note, c'est la même question que Celui-ci , seulement dans Python sauf Ruby. J'utilise également le API postereuse .


0 commentaires

3 Réponses :


17
votes
>>> "\\u003Cp\\u003E".decode('unicode-escape')
u'<p>'

0 commentaires

15
votes

Si les données sont venues de JSON, le module JSON code> doit déjà avoir déjà décodé ces évasions pour vous:

>>> import json
>>> json.loads('"\u003Cp\u003E"')
u'<p>'


2 commentaires

J'aimerais pouvoir marquer ces deux réponses comme correctes. Merci pour ton aide!


@Spike: S'il s'agit d'une entrée JSON, c'est la bonne réponse réelle. Les littéraux de String Python ne sont pas complètement compatibles avec JSON String Literranmes et Unicode-Scape peuvent renvoyer les mauvais résultats pour des caractères en dehors du plan multilingue de base (que JS / JSON Store sous forme de substitution, mais Python pourrait ne pas).



1
votes

EDIT: la question originale " les caractères sans-accessoires dans une chaîne avec python " n'a pas précisé si la chaîne devait être écrite ou à être lire (plus tard sur, les mots " la réponse JSON " ont été ajoutés pour clarifier l'intention de lire ).

J'ai donc répondu à la question opposée: comment écrire JSON Les données sérialisées les larginement à une chaîne non évaluée (plutôt que de charger des données de la chaîne).

Mon cas d'utilisation produisait un fichier JSON à partir de mon propre dictionnaire de données, mais le fichier contenait des caractères non ascii scapés. Donc je l'ai fait comme ceci: xxx

si s'assurent_ascii est vrai (la valeur par défaut), la sortie est garantie de tous les caractères non-ASCII entrants échappé. Si S'assurer_AcFII est faux, ces caractères seront émis sous la forme.

pris à partir d'ici: https://docs.python.org/3/library/json.html


2 commentaires

Heads-up: J'ai édité la question (WOW presque une décennie) avec un arrière-plan et votre réponse à enlever une partie de l'intro supplémentaire - n'hésitez pas à revenir si vous ne pensez pas que c'était approprié!


Merci @ ti7 Je préfère clarifier cette réponse a été écrite avant votre changement du titre original