Maison > développement back-end > Tutoriel Python > Comment puis-je convertir en toute sécurité une représentation sous forme de chaîne d'un dictionnaire en dictionnaire en Python ?

Comment puis-je convertir en toute sécurité une représentation sous forme de chaîne d'un dictionnaire en dictionnaire en Python ?

Mary-Kate Olsen
Libérer: 2024-12-23 12:11:19
original
467 Les gens l'ont consulté

How Can I Safely Convert a String Representation of a Dictionary to a Dictionary in Python?

Conversion de représentations sous forme de chaîne de dictionnaires en dictionnaires

En Python, il est souvent souhaitable de convertir des représentations sous forme de chaîne de dictionnaires, telles que la représentation sous forme de chaîne ci-dessous , dans leurs dictionnaires correspondants :

s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
Copier après la connexion

Éviter d'utiliser 'eval'

Bien qu'il soit possible d'utiliser la fonction 'eval' pour évaluer l'expression de chaîne, cette méthode est déconseillée pour des raisons de sécurité. 'eval' exécute n'importe quel code arbitraire, augmentant le risque de vulnérabilités.

Alternatives plus sûres

Pour convertir en toute sécurité les dictionnaires de chaînes, pensez à utiliser l'ast.literal_eval intégré ' fonction. 'ast.literal_eval' est spécifiquement conçu pour évaluer les expressions Python littérales, telles que la représentation sous forme de chaîne de dictionnaires, de tuples, de listes, etc.

Exemple

import ast
ast.literal_eval("{'muffin' : 'lolz', 'foo' : 'kitty'}")
Copier après la connexion

Sortie :

{'muffin': 'lolz', 'foo': 'kitty'}
Copier après la connexion

Avantages de 'ast.literal_eval'

  • Sécurité : il évalue uniquement les expressions littérales, empêchant ainsi l'exécution de code malveillant.
  • Polyvalence : il peut évaluer non seulement des dictionnaires mais également des listes, des tuples, et d'autres structures littérales Python.

En comparaison avec « eval », 'ast.literal_eval' fournit un moyen plus sûr et plus contrôlé de convertir des représentations sous forme de chaîne de dictionnaires ou d'autres littéraux en objets Python.

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