如何进行字符串不区分大小写的检查?
我最近开始学习Python,作为练习,我正在制作一个基于文本的冒险游戏。目前我的代码效率不高,因为它在检查用户的回答时,要对比多个同一个词的不同写法。我想知道怎么才能让这个检查不区分大小写。
下面是示例代码:
if str('power' and 'POWER' and 'Power') in str(choice):
print('That can certainly be found here.')
time.sleep(2)
print('If you know where to look... \n')
5 个回答
5
str类型/对象有一个专门用于不区分大小写比较的方法。
在python3的命令行中:
>>> help(str)
...
| casefold(...)
| S.casefold() -> str
|
| Return a version of S suitable for caseless comparisons.
...
所以,如果你在任何字符串的后面加上.casefold(),它会把所有字母变成小写。
举个例子:
>>> "Spam".casefold()
'spam'
>>> s = "EggS"
>>> s.casefold()
'eggs'
>>> s == "eggs"
False
>>> s.casefold() == "eggs"
True
10
如果你想做精确的比较,可以用这个。
if choice.lower() == "power":
如果你想比较字符串的一部分,可以用这个。
if "power" in choice.lower():
如果你感兴趣的话,还有 choice.lower().startswith( "power" )
这个方法。
39
if 'power' in choice.lower():
应该这样做(假设 choice
是一个字符串)。如果 choice
中包含了单词 power
,那么这个条件就成立。如果你想检查两个值是否完全相等,应该用 ==
而不是 in
。
另外,如果你想确保只匹配整个单词 power
(而不是像 horsepower
或 powerhouse
这样的词的一部分),那么可以使用正则表达式:
import re
if re.search(r'\bpower\b', choice, re.I):