使用字典值评估python字符串表达式

时间:2019-03-26 05:10:34

标签: python python-3.x

我正在解析一个文本文件,其中包含python“ string”。例如:

'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脚本的运行期间进行调整。

我想以一种动态的方式替换上面字符串中所有键的外观,然后计算该表达式。

2 个答案:

答案 0 :(得分:0)

最后,我找到了解决问题的方法:

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)

答案 1 :(得分:-1)

以下是您的期望:

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(','))