如何使字符串检查不区分大小写?

时间:2011-05-04 21:13:18

标签: python string case-insensitive

我最近开始学习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 个答案:

答案 0 :(得分:24)

if 'power' in choice.lower():

应该这样做(假设choice是一个字符串)。如果choice 包含单词power,则会出现这种情况。如果要检查是否相等,请使用==代替in

此外,如果您想确保仅将power与整个单词匹配(而不是horsepowerpowerhouse的一部分),请使用正则表达式:< / p>

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

答案 1 :(得分:9)

如果您正在进行精确比较,请执行此操作。

if choice.lower() == "power":

或者,如果您正在进行子字符串比较。

if "power" in choice.lower():

如果你感兴趣的话,你也有choice.lower().startswith( "power" )

答案 2 :(得分:3)

使用str.lower()将所有条目转换为小写,并仅针对小写的可能性检查字符串。

答案 3 :(得分:1)

str类型/对象有一个专门用于无壳比较的方法。

在python3提示符下:

int input1=10;
 timer1= new Timer();
            timer1.schedule(new TimerTask() {
                @Override
                public void run() {
                    TimerMethod(input1);
                }

            }, 0, 3000);



  private void TimerMethod(int myinput)
    {
        this.runOnUiThread(Timer_Tick);
//How pass myinput to Timer_Tick????????????

    }

因此,如果你将.casefold()添加到任何字符串的末尾,它将为你提供全部小写。

示例:

>>> help(str)
...
 |  casefold(...)
 |      S.casefold() -> str
 |      
 |      Return a version of S suitable for caseless comparisons.
...

答案 4 :(得分:0)

.casefold()上使用.lower(),尤其是在处理可能不是ASCII文本的数据时。

>>> 'MyString'.casefold()
'mystring'

请参阅https://stackoverflow.com/a/45745761/14816491,了解有关胶套和下胶套之间差异的详细信息