我知道有办法解决这个问题,但我想了解为什么这不起作用。在
这是一个非常简单的语句,只有在显示“or list”中的第一个子字符串时才会返回True。在
for i in list:
if (substring1 or substring2 or substring3) in string:
print(string + " found!")
我错过了什么?如果在字符串中找到任何子字符串,那么or条件将等于true。也就是说,只有在字符串中找到substring1,而没有substring2或substring3时,我才认为是真的。在
Tags:
因为python使用延迟求值。。。例如。。。在
将打印“nothing”,因为它在python代码中的计算结果为True不检查错误,这通常会引发错误并阻止脚本继续。。。在
^{pr2}$假设}是真实的。然后检查它是否在
substring1
不是空字符串,则此表达式的计算结果为substring1
,因为{string
中。其他语句对子环没有影响。在换句话说,}之前被计算,而{}则计算它找到的第一个真值(这称为短路)。不能以这种方式使用
or
在{in
来检查字符串中是否有多个子字符串。在你想要:
^{pr2}$或者:
这里的问题是您首先计算
^{pr2}$(s1 or s2 or s3)
,如果s1
的计算结果不是false
,那么它将给您s1
。在布尔上下文中,空字符串的值为false
:您需要的是
s1 in string or s2 in string or s3 in string
,如果字符串中至少有一个子字符串,则返回true。在相关问题 更多 >
编程相关推荐