从字符串中评估 python 中的 if 语句

Evaluating if statement in python from a string

我正在从事一个允许用户定义过滤器以对 csv 文件中的数据进行排序的项目。他们可以根据需要创建尽可能多或尽可能少的过滤器,因此我尝试从一个字符串创建一个 if 语句,该字符串会随着用户定义更多过滤器而变得更长。

我的字符串变量有一个输出:行[0]==“6/1/2014 0:00:00”

为了简单起见,我将在下面的示例代码中将其硬编码为变量名

问题是它没有正确评估这个 if 语句。它 returns 文件的每一行。

f = open("somefile.csv", "r")
r = csv.reader(f)

statement = 'row[0]=="6/1/2014 0:00:00"'
for row in r:
    if statment:
       print(row)

尽管您必须注意明显的安全原因,但您可以使用 eval:

if eval(statement):
    print row