从字符串中评估 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
我正在从事一个允许用户定义过滤器以对 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