如何进行字符串不区分大小写的检查?

26 投票
5 回答
65906 浏览
提问于 2025-04-16 17:00

我最近开始学习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(而不是像 horsepowerpowerhouse 这样的词的一部分),那么可以使用正则表达式:

import re
if re.search(r'\bpower\b', choice, re.I):

撰写回答