Как сделать проверку строки без учета регистра? - PullRequest
12 голосов
/ 05 мая 2011

Я недавно начал изучать 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')

Ответы [ 4 ]

24 голосов
/ 05 мая 2011
if 'power' in choice.lower():

должен сделать (при условии choice - строка).Это будет верно, если choice содержит слово power.Если вы хотите проверить равенство, используйте == вместо in.

Также, если вы хотите убедиться, что вы соответствуете power только как целое слово (а не как частьhorsepower или powerhouse), затем используйте регулярные выражения:

import re
if re.search(r'\bpower\b', choice, re.I):
9 голосов
/ 05 мая 2011

Это если вы делаете точное сравнение.

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

Или это, если вы выполняете сравнение подстрок.

if "power" in choice.lower():

У вас также есть choice.lower().startswith( "power" ), если вас это интересует.

3 голосов
/ 05 мая 2011

используйте str.lower(), чтобы преобразовать все записи в нижний регистр и проверять только строку на соответствие строчным возможностям.

1 голос
/ 20 февраля 2016

Тип / объект 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...