将嵌套列表的字符串安全转换为List-eval()和literal_eval()



我需要从.cfg文件中读取一些字符串,这是.cfg格式:

rangeList1 = [50,60],[100,200],[300]
rangeError = [100],[t],[50,100]

我想安全地将其转换为列表列表,所以我使用:

list(ast.literal_eval(limitList))

结果为[[50, 60], [100, 200], [300]],类型为List

我知道eval()是不安全的,因为输入字符串可能会导致安全漏洞。

ast.literal_eval()文档说:

安全地评估表达式节点。。。。。

问题:

  1. 由于这是一个关键问题,我想确定,literal_eval()方法使用起来100%安全吗?

  2. 如果没有,你能建议另一种方法将嵌套列表字符串转换为列表吗?

我建议您最好讨论一下使用ConfigParser进行解析。

您可以用这样的样式重写它:

文件:

{
    "rangeList1": [[50,60],[100,200],[300]],
    "rangeError": [[100],["t"],[50,100]]
}

脚本:

import json
with open("file", "r") as f:
    settings = json.load(f)

最新更新