How to make string check case insensitive?
if 'power' in choice.lower():
should do (assuming choice
is a string). This will be true if choice
contains the word power
. If you want to check for equality, use ==
instead of in
.
Also, if you want to make sure that you match power
only as a whole word (and not as a part of horsepower
or powerhouse
), then use regular expressions:
import reif re.search(r'\bpower\b', choice, re.I):
This if you're doing exact comparison.
if choice.lower() == "power":
Or this, if you're doing substring comparison.
if "power" in choice.lower():
You also have choice.lower().startswith( "power" )
if that interests you.
The str type/object has a method specifically intended for caseless comparison.
At the python3 prompt:
>>> help(str)... | casefold(...) | S.casefold() -> str | | Return a version of S suitable for caseless comparisons....
So, if you add .casefold() to the end of any string, it will give you all lowercase.
Examples:
>>> "Spam".casefold()'spam'>>> s = "EggS">>> s.casefold()'eggs'>>> s == "eggs"False>>> s.casefold() == "eggs"True