python的ast模块之literal_eval妙用

python ast module

import ast

python解析执行的过程:
    词法分析 --> 具体语法树 --> 抽象语法树 --> 控制流图 --> 字节码 --> 执行

ast提供了访问和修改上述中抽象语法树的功能
参考:
    https://zhuanlan.zhihu.com/p/21945624

利用ast.literal_eval 转换 字符串json对象

1
2
3
4
5
6
7
8
9
10
11
12
import ast
import json
str = "{\"errcode\":0,\"errmsg\":\"ok\",\"invaliduser\":\"\"}"
dict = ast.literal_eval(str)

type(str)
<type 'str'>
type(ast.literal_eval(str))
<type 'dict'>

#request
json.loads(ast.literal_eval(response.text))['errcode']