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

时间:2013-12-01 09:49:12

标签: python list 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() docs说:

  

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

问题:

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

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

2 个答案:

答案 0 :(得分:1)

我建议你最好先谈谈使用ConfigParser进行解析。

答案 1 :(得分:0)

你可以用这种风格重写它:

文件:

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

脚本:

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