簡體   English   中英

使用字典值評估 python 字符串表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM