execは、危険なことが分からないなら使っては駄目。
Pythonのリテラルとして正しい文字列を評価したいならast.literal_evalを使うべき。
pyhton
1import ast
2a = ast.literal_eval("[{'test': 'AND', 'children': [{'test3': 'value', 'test2': [12345678]}]}]")
3print(type(a))
4print(a)
結果
plain
1<class 'list'>
2[{'test': 'AND', 'children': [{'test3': 'value', 'test2': [12345678]}]}]
これでPythonのデータ構造になるので取り出せます。(すでに回答は出ているので書きません)
ただ、なんでそんなことをやる羽目になっているのか? から考え直すべきです。
追記
例えば 'test'
や'AND'
のクォートが'
であることが、今困っている主な理由なわけです。
もし仮にデータを出力する方もPythonで書かれていて、
python
1a = [{'test': 'AND', 'children': [{'test3': 'value', 'test2': [12345678]}]}]
2print(a)
みたいなコードで出力しているなら、そちらがよくなくて、
python
1import json
2a = [{'test': 'AND', 'children': [{'test3': 'value', 'test2': [12345678]}]}]
3print(json.dumps(a))
などに改めて[{"test": "AND", "children": [{"test3": "value", "test2": [12345678]}]}]
と出力する方向性で直した方がずっといいですよね。(そうすれば色んな言語のJSONパーザで扱えます)
"なんでそんなことをやる羽目になっているのか?"というのはそんな話です。