nkk*_*nak 2 python string dictionary eval
给定字符串
str=" dept_id == CS1 and student_count > 75 "
Run Code Online (Sandbox Code Playgroud)
字典
dict = {'dept_id': 'CS1' ,'student_count': 95 }
Run Code Online (Sandbox Code Playgroud)
我们需要在字符串中替换dict中的值并进行求值
eval (str)
Run Code Online (Sandbox Code Playgroud)
以下代码适用于所有整数情况:
for item in dict.items():
k , v = item
if s.find(k) > -1:
k=str(k)
s=s.replace(k, str(v),1)
print "replaced",s
print eval(s)
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来解决这个问题?
eval接受可选字典(globals,locals).您无需手动替换字符串:
>>> s = "dept_id == 'CS1' and student_count > 75 "
>>> d = {'dept_id': 'CS1' ,'student_count': 95 }
>>> eval(s, d)
True
>>> d = {'dept_id': 'CS1' ,'student_count': 35 }
>>> eval(s, d)
False
Run Code Online (Sandbox Code Playgroud)
顺便说一句,使用str,dict作为变量名是不是一个好主意.他们将阴影内建函数/类型str,dict.