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'}"
É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'}")
Sortie :
{'muffin': 'lolz', 'foo': 'kitty'}
Avantages de 'ast.literal_eval'
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!