如何检查一个variables是否等于一个string或另一个string?

if var is 'stringone' or 'stringtwo': dosomething() 

这不行! 我有一个variables,我需要它做任何一个值,但它不会进入if语句。 在Java中, if (var == "stringone" || "stringtwo")起作用。 我如何在Python中编写这个?

这不符合你的期望:

 if var is 'stringone' or 'stringtwo': dosomething() 

这是一样的:

 if (var is 'stringone') or 'stringtwo': dosomething() 

这总是正确的,因为'stringtwo被认为是“真正的”价值。

有两种select:

 if var in ('stringone', 'stringtwo'): dosomething() 

或者你可以编写单独的平等testing,

 if var == 'stringone' or var == 'stringtwo': dosomething() 

不要用is因为is比较对象的身份。 有时候你可能会放弃它,因为Python实际上会产生大量的string,就像你可能在Java中放弃它一样,因为Java实际上会产生大量的string。 但是,除非你真的需要对象身份,否则不要使用。

 >>> 'a' + 'b' == 'ab' True >>> 'a' + 'b' is 'abc'[:2] False # but could be True >>> 'a' + 'b' is 'ab' True # but could be False 
 if var == 'stringone' or var == 'stringtwo': do_something() 

或更多pythonic,

 if var in ['string one', 'string two']: do_something() 
 if var == 'stringone' or var == 'stringtwo': dosomething() 

'is'用于检查两个引用是否被引用到同一个对象。 它比较内存地址。 显然,'stringone'和'var'是不同的对象,它们只是包含相同的string,但是它们是类“str”的两个不同的实例。 所以他们当然有两个不同的内存地址,'是'将返回False。

两个单独的检查。 此外,使用==而不是检查平等而不是身份。

  if var=='stringone' or var=='stringtwo': dosomething() 
 for a in soup("p",{'id':'pagination'})[0]("a",{'href': True}): if createunicode(a.text) in ['<','<']: links.append(a.attrMap['href']) else: continue 

这个对我有用。