How to check if a variable is equal to one string or another string?

Question:

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

This does not work! I have a variable and I need it to do something when it is either of the values, but it will not enter the if statement. In Java if (var == "stringone" || "stringtwo") works. How do I write this in Python?

Asked By: Rahul Sharma

||

Answers:

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

‘is’ is used to check if the two references are referred to a same object. It compare the memory address.
Apparently, ‘stringone’ and ‘var’ are different objects, they just contains the same string, but they are two different instances of the class ‘str’. So they of course has two different memory addresses, and the ‘is’ will return False.

Answered By: Lingfeng Xiong
if var == 'stringone' or var == 'stringtwo':
    do_something()

or more pythonic,

if var in ['string one', 'string two']:
    do_something()
Answered By: inspectorG4dget

Two separate checks. Also, use == rather than is to check for equality rather than identity.

 if var=='stringone' or var=='stringtwo':
     dosomething()
Answered By: Andrew Jaffe

This does not do what you expect:

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

It is the same as:

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

Which is always true, since 'stringtwo' is considered a “true” value.

There are two alternatives:

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

Or you can write separate equality tests,

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

Don’t use is, because is compares object identity. You might get away with it sometimes because Python interns a lot of strings, just like you might get away with it in Java because Java interns a lot of strings. But don’t use is unless you really want object identity.

>>> 'a' + 'b' == 'ab'
True
>>> 'a' + 'b' is 'abc'[:2]
False # but could be True
>>> 'a' + 'b' is 'ab'
True  # but could be False
Answered By: Dietrich Epp
for a in soup("p",{'id':'pagination'})[0]("a",{'href': True}):
        if createunicode(a.text) in ['<','<']:
            links.append(a.attrMap['href'])
        else:
            continue

It works for me.

Answered By: Yaseer Arafat
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.