Comment convertir un objet javascript brut en dictionnaire python?


Answers

Cela ne fonctionnera probablement pas partout, mais pour commencer, voici une simple regex qui devrait convertir les clés en guillemets afin que vous puissiez passer dans json.loads. Ou est-ce ce que vous faites déjà?

In[70] : quote_keys_regex = r'([\{\s,])(\w+)(:)'

In[71] : re.sub(quote_keys_regex, r'\1"\2"\3', js_obj)
Out[71]: '{"x":1, "y":2, "z":3}'

In[72] : js_obj_2 = '{x:1, y:2, z:{k:3,j:2}}'

Int[73]: re.sub(quote_keys_regex, r'\1"\2"\3', js_obj_2)
Out[73]: '{"x":1, "y":2, "z":{"k":3,"j":2}}'
Question

Lorsque je gratte un site Web, j'extrais des données de balises <script> .
Les données que je reçois ne sont pas au format JSON standard. Je ne peux pas utiliser json.loads() .

# from
js_obj = '{x:1, y:2, z:3}'

# to
py_obj = {'x':1, 'y':2, 'z':3}

Actuellement, j'utilise regex pour transformer les données brutes au format JSON .
Mais je me sens très mal quand je rencontre une structure de données compliquée.

Avez-vous de meilleures solutions? Merci pour le partage!