Comment obtenir des objets chaîne au lieu d'Unicode à partir de JSON dans Python 2 ?

Linda Hamilton
Libérer: 2024-11-03 11:02:02
original
275 Les gens l'ont consulté

How to Get String Objects Instead of Unicode from JSON in Python 2?

Obtention d'objets chaîne au lieu d'Unicode à partir de JSON (Python 2)

Lors de l'analyse de JSON à partir de fichiers texte codés en ASCII dans Python 2, le comportement par défaut est de représenter une chaîne valeurs en tant qu’objets Unicode. Cela peut poser un problème lorsque vous travaillez avec des bibliothèques qui n'acceptent que des objets chaîne.

Heureusement, il existe plusieurs façons d'obtenir des objets chaîne au lieu d'objets Unicode :

Utiliser PyYAML

PyYAML est une bibliothèque Python permettant d'analyser YAML, qui est un surensemble de JSON. Il fournit un moyen pratique d'obtenir des objets chaîne tout en préservant la structure JSON :

<code class="python">import yaml

json_string = '["a", "b"]'
data = yaml.safe_load(json_string)  # Returns a list of strings</code>
Copier après la connexion

Remarque : Cette méthode ne fonctionne que pour les données codées en ASCII.

Conversion Unicode en objets chaîne

Si les données sont codées en Unicode, vous pouvez utiliser une fonction de conversion pour convertir les chaînes Unicode en chaînes normales :

<code class="python">def unicode_to_string(obj):
    if isinstance(obj, basestring):
        return obj.encode('utf-8')
    elif isinstance(obj, dict):
        return dict((unicode_to_string(k), unicode_to_string(v)) for k, v in obj.iteritems())
    elif isinstance(obj, list):
        return [unicode_to_string(v) for v in obj]
    else:
        return obj

# Usage:
json_string = '["\u00e1", "\u00e9"]'
data = json.loads(json_string)
converted_data = unicode_to_string(data)  # Converts Unicode strings to strings</code>
Copier après la connexion

Utilisation d'un crochet d'objet

Vous pouvez également utiliser un hook d'objet pour convertir les chaînes Unicode en chaînes lors de la sérialisation :

<code class="python">import json

def object_hook(obj):
    if isinstance(obj, unicode):
        return obj.encode('utf-8')
    return obj

# Usage:
json_string = '["a", "b"]'
data = json.loads(json_string, object_hook=object_hook)  # Converts Unicode strings to strings during deserialization</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal