使用正则表达式如何将“ ==”或“等于”从json转换为python并执行常规比较运算符

时间:2019-08-03 11:13:53

标签: python json

我需要从json中获取==来比较python文件中的s1==s2 而不是直接分配比较运算符,我需要从json中获取

def something():
    s1=“Search_string”
    s2=“searchstring”
    if s1 == s2:
        print("Success")
    else:
        print(“Error”)

json:

{
    "Mapping": 
        {
            "Operator": "=="
        } 
}

1 个答案:

答案 0 :(得分:0)

您可以使用compile docseval docs

def something(s1, s2, op="=="):
    # if using an older python version which doesn't supports f-string
    # use something like `format` to put the `op` variable in the string.
    if eval(compile(f"bool(s1 {op} s2)", "<string>", "eval")):
        print("Success")
    else:
        print("Error")


s1 = "Search_string"
s2 = "searchstring"
op = "=="  # load the actual string from your json, this is just for demo
something(s1, s2, op)  # prints Error
something(s1, s2, "!=")  # prints Success
something(s1, s1, op)  # prints Success

从json文件中加载运算符字符串,希望您知道该怎么做。
有关evalcompile的更多信息,请参见this。答案非常透彻,我无意在这里解释它们。

  

警告:如果您无法控制来自json文件的内容,请注意类似这样的代码可能很危险。只需编辑json文件,有人就可以在您的python脚本中插入任何随机代码。