Python 将字符串转为字典的三个方法json/eval/ast以及其使用规则

言简意赅直接上代码:

import ast
import json

def main():
    #是json字符串
    #是字典字符串
    #eval可用、json.loads可用、ast.literal_eval可用
    str_1_1 = '{"apple":1,"pear":"sweet","peach":3,"banana":4}'

    
    #是json字符串
    #不是字典字符串(含有非法字符null/true)
    #eval不可用、json.loads可用、ast.literal_eval不可用
    str_1_2 = '{"apple":1,"pear":"sweet","peach":null,"banana":true}'
    
    #不是json字符串
    #是字典字符串
    #eval可用、json.loads可用、ast.literal_eval可用
    str_2 = "{'apple':1,'pear':'sweet','peach':3,'banana':4}"

总结:看完注释的解释,你会发现,如果是标准的json字符串,那么可以用json.loads;如果是标准的字典字符串,可用eval、ast;如果都是,那么都可以使用。
那么如何看是不是标准的json字符串或字典字符串呢?

  • 字典不认true/false/null,因为python是True/False/None
  • json不认单引号

  还有个需要注意的问题是eval(str)里的参数最不好不要是input输入型,因为会有安全问题,具体可看网上。

你可能感兴趣的:(python,python)