[英]evaluate a python string expression using dictionary values
我正在解析一个包含python“字符串”的文本文件。 例如:
'my_home1' in houses.split(',') and '2018' in iphone.split(',') and 14 < mask
对于上面的例子,我写了一个可能的字典:
dict = {'house' : 'my_home1,my_home2', 'iphone' : '2015,2018', 'mask' : '15' }
但是dict
事先不知道,将在 python 脚本的运行期间进行调整。
我想以动态方式替换上面字符串中所有键的外观,然后评估表达式。
最后我找到了解决我的问题的方法:
text = "'my_home1' in houses.split(',') and '2018' in iphone.split(',') and 14 < mask"
dict = {'house' : 'my_home1,my_home2', 'iphone' : '2015,2018', 'mask' : '15' }
expression = 'false'
for key in dict.keys():
if isinstance(dict.get(key), str):
text = re.sub(key, '\'{}\''.format(dict.get(key)), text)
else:
text = re.sub(key, dict.get(key), text)
eval(text)
以下是您所期望的:
dict_ = {'house': 'my_home1,my_home2', 'iphone': '2015,2018'}
print('my_home1' in dict_['house'].split(',') and '2018' in dict_[
'iphone'].split(',') and '2019' not in dict_['iphone'].split(','))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.