python中的条件if语句

python中的条件if语句,python,python-2.7,Python,Python 2.7,我不想编写长的“if”语句,而是想将其存储在某个变量中,然后将其传递到“if”条件中。 例如: tempvar = '1 >0 and 10 > 12' if tempvar: print something else: do something 在python中可能吗 谢谢你的建议,但我的问题是我想不出来的。 我正在文本文件中执行多字符串搜索,并尝试将多字符串转换为一个条件: allspeciesfileter=['Homo sapiens', 'Mus

我不想编写长的“if”语句,而是想将其存储在某个变量中,然后将其传递到“if”条件中。 例如:

tempvar = '1 >0 and 10 > 12'
if tempvar:
   print something
else:
     do something
在python中可能吗

谢谢你的建议,但我的问题是我想不出来的。 我正在文本文件中执行多字符串搜索,并尝试将多字符串转换为一个条件:

    allspeciesfileter=['Homo sapiens', 'Mus musculus', 'Rattus norvegicus' ,'Sus scrofa']
    multiequerylist=[]

    if len(userprotein)> 0:
        multiequerylist.append("(str("+ "'"+userprotein+ "'"+")).lower() in (info[2].strip()).lower()")
    if len(useruniprotkb) >0:
        multiequerylist.append("(str("+ "'"+useruniprotkb+ "'"+")).lower() in (info[3].strip()).lower()")
    if len(userpepid) >0:
        multiequerylist.append("(str("+ "'"+userpepid+ "'"+")).lower() in (info[0].strip()).lower()")
    if len(userpepseq) >0:
        multiequerylist.append("(str("+ "'"+userpepseq+ "'"+")).lower() in (info[1].strip()).lower()")


    multiequery =' and '.join(multiequerylist)

    for line in pepfile:
        data=line.strip()
        info= data.split('\t')
        tempvar = bool (multiquery)
        if tempvar:
           do something

但是多查询不起作用

只需删除字符串并将条件存储在变量中即可

>>> condition = 1 > 0 and 10 > 12
>>> if condition:
...    print("condition is true")
... else:
...    print("condition is false")
...
condition is false
甚至可以使用(例如)lambda存储更复杂的条件

这里有一个随机的例子,使用lambda和一些更复杂的东西

(尽管使用BS进行解析有点过分)

>>来自bs4导入组
>>>html=“”
>>>坏类=['a-bad-class','另一个坏类']
>>>条件=λx:不存在(对于x['class']中的c,c在bad_类中)
>>>soup=BeautifulSoup(html,“html.parser”)
>>>anchor=soup.find(“a”)
>>>如果锚点具有属性(“类”)和条件(锚点):
...    打印(“无坏类”)
... 其他:
...    打印(“条件失败”)
条件失败

只需删除字符串并将条件存储在变量中即可

>>> condition = 1 > 0 and 10 > 12
>>> if condition:
...    print("condition is true")
... else:
...    print("condition is false")
...
condition is false
甚至可以使用(例如)lambda存储更复杂的条件

这里有一个随机的例子,使用lambda和一些更复杂的东西

(尽管使用BS进行解析有点过分)

>>来自bs4导入组
>>>html=“”
>>>坏类=['a-bad-class','另一个坏类']
>>>条件=λx:不存在(对于x['class']中的c,c在bad_类中)
>>>soup=BeautifulSoup(html,“html.parser”)
>>>anchor=soup.find(“a”)
>>>如果锚点具有属性(“类”)和条件(锚点):
...    打印(“无坏类”)
... 其他:
...    打印(“条件失败”)
条件失败
>1>0和10>12
假的
>>>“1>0和10>12”
“1>0和10>12”
>>>stringtest='1>0和10>12'
>>>打印(stringtest)
1>0和10>12
>>>如果是stringtest:
...     打印(“确定”)
... 
好啊
>>>1>0和10<12
真的
>>>布尔检验=1>0,10<12
>>>打印(布尔测试)
真的
>>>
字符串类型为True。您应该删除单引号。

>1>0和10>12
假的
>>>“1>0和10>12”
“1>0和10>12”
>>>stringtest='1>0和10>12'
>>>打印(stringtest)
1>0和10>12
>>>如果是stringtest:
...     打印(“确定”)
... 
好啊
>>>1>0和10<12
真的
>>>布尔检验=1>0,10<12
>>>打印(布尔测试)
真的
>>>

字符串类型为True。您应该删除单引号。

由于性能、安全性和维护问题,我强烈建议在生产代码中避免使用单引号,但您可以使用将字符串转换为实际布尔值:

string_expression = '1 >0 and 10 > 12'
condition = eval(string_expression)
if condition:
   print something
else:
   do something

由于性能、安全性和维护问题,我强烈建议在生产代码中避免这种情况,但您可以使用将字符串转换为实际布尔值:

string_expression = '1 >0 and 10 > 12'
condition = eval(string_expression)
if condition:
   print something
else:
   do something

表达式
(1>0)和(10>12)
的结果是一个布尔值,因此只需将其存储在变量中即可。也就是说,您就快到了,只是不要将表达式转换为字符串(无论出于何种原因)。感谢您的建议,我不知道条件是否使用布尔值表达式
(1>0)和(10>12)
的结果是布尔值,所以只需将其存储在变量中即可。也就是说,你就快到了,只是不要将表达式转换成字符串(无论出于什么原因)。谢谢你的建议,我不知道条件是否使用布尔值。谢谢,这真是太棒了。但是我已经详细地更新了我的问题,这个解决方案仍然不适用于我的案例。谢谢,这真是太棒了。但我已经详细更新了我的问题,这个解决方案仍然不适用于我的案例