Question

    

Cette question a déjà une réponse ici:

         

I ai une sortie de chaîne qui est sous forme d'une dict ex.

{'key1':'value1','key2':'value2'} 

comment peut facilement faire enregistrer comme un dict et non comme une chaîne?

Était-ce utile?

La solution

astr est une chaîne qui est « sous la forme d'une dict ». ast.literal_eval il se transforme en un objet dict python.

In [110]: import ast

In [111]: astr="{'key1':'value1','key2':'value2'}"

In [113]: ast.literal_eval(astr)
Out[113]: {'key1': 'value1', 'key2': 'value2'}

Autres conseils

Il est préférable si vous êtes en Python 2.6+, car il est pas soumis aux failles de sécurité dans eval.

import ast

s = """{'key1':'value1','key2':'value2'}"""
d = ast.literal_eval(s)

Où êtes-vous cette chaîne à partir? Est-il au format JSON? ou format dictionnaire python? ou tout simplement un format ad hoc qui se trouve être semblable à des dictionnaires de python?

Si c'est JSON, ou si elle est seulement un dict, et ne contient que des chaînes et / ou des chiffres, vous pouvez utiliser json.loads, il est l'option la plus sûre car il peut tout simplement pas analyser le code python.

Cette approche a des lacunes mais, si, par exemple, les chaînes sont placées entre guillemets simples ' au lieu de guillemets doubles ", sans oublier qu'il ne parse objets JSON / tableaux, qui ne par hasard arriver à partager la même syntaxe avec pythons dicts / tableaux.

Bien que je pense qu'il est probable que la chaîne que vous obtenez est destiné à être au format JSON. Je fais cette hypothèse parce qu'il est un format commun pour l'échange de données.

à l'aide json.loads - peut être plus rapide

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top