Python:使用AND和OR与.FIND()方法

时间:2011-10-23 20:16:24

标签: python string

想象一下我在解释器中输入以下代码:

var1 = 'zuuzuu'

现在假设我输入:

var1.find('a')

解释器返回-1。我理解,因为没有找到子串。但请帮助我理解这一点:

var1.find('a' or 'z') #case 1

返回-1

var1.find('a' and 'z') #case 2

返回0

根据我脑海中的逻辑,解释器应该为情况2返回-1,因为子字符串'a'AND'z'不在字符串中。在情况1中,应返回0,因为'z'是子字符串。

感谢

2 个答案:

答案 0 :(得分:7)

表达式'a' or 'z'始终会产生'a'。表达式'a' and 'z'始终会产生'z'。它不是某种用于查询容器的DSL,它是一个简单的布尔表达式(并且find用其结果调用)。如果你想说“字符串中有'a'或'z',你需要做

var1.find('a') != -1 or var.find('z') != -1

对于第二个(字符串中的'a'和'z'):

var1.find('a') != -1 and var.find('z') != -1

答案 1 :(得分:1)

这是因为find方法实际上不支持orand,它只支持查询字符串。

那么,究竟发生了什么?好吧,事实证明orand是可以对字符串执行的运算符。

'a' and 'z' --> 'z'
'a' or 'z'  --> 'a'

所以你有它,你基本上只是正常搜索'a''z'