Maison > développement back-end > Tutoriel Python > Comment obtenir des objets chaîne à partir de JSON dans Python 2 ?

Comment obtenir des objets chaîne à partir de JSON dans Python 2 ?

Patricia Arquette
Libérer: 2024-11-03 08:39:30
original
655 Les gens l'ont consulté

How to Get String Objects from JSON in Python 2?

Comment récupérer des objets chaîne à partir de JSON dans Python 2

Lors de l'analyse de données JSON à partir de fichiers texte codés en ASCII dans Python 2, vous pouvez rencontrer le problème des valeurs de chaîne converties en objets Unicode. Cela peut être problématique lorsque vous travaillez avec des bibliothèques qui n'acceptent que des objets chaîne.

Une solution légère : PyYAML

Pour résoudre ce problème, vous pouvez exploiter la bibliothèque PyYAML. Comme JSON est un sous-ensemble de YAML, PyYAML peut être utilisé pour analyser les fichiers JSON et renvoyer des clés et des valeurs sous forme de chaînes au lieu d'objets Unicode. Voici un exemple :

<code class="python">import yaml

original_list = ['a', 'b']
yaml_list = yaml.safe_load(yaml.dump(original_list))

print(type(yaml_list[0]))  # Output: <class 'str'></code>
Copier après la connexion

Approches de conversion

Si vous ne pouvez pas utiliser PyYAML, envisagez d'utiliser une fonction de conversion. La fonction de conversion de Mark Amery est simple et efficace :

<code class="python">def unicode_to_str(obj):
    if isinstance(obj, unicode):
        return obj.encode('utf-8')
    elif isinstance(obj, list):
        return [unicode_to_str(x) for x in obj]
    elif isinstance(obj, dict):
        return {unicode_to_str(k): unicode_to_str(v) for k, v in obj.items()}
    return obj</code>
Copier après la connexion

Avertissements :

  • Si le fichier JSON contient des caractères non-ASCII, il sera analysé comme Objets Unicode par PyYAML.
  • Évitez d'utiliser la fonction load() de PyYAML, car cela peut entraîner des problèmes de sécurité. Préférez plutôt safe_load().
  • Envisagez d'utiliser Ruamel YAML si vous avez besoin de la prise en charge de YAML 1.2 ou de nombres faibles.

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