Python соответствует заглавным и маленьким буквам без использования нижнего или верхнего - PullRequest
0 голосов
/ 29 марта 2019

Как я могу сделать строку нечувствительной к регистру, чтобы при проверке на заглавные или строчные буквы каждый раз возвращалось значение true.

Например, есть способ достичь следующего:

>>> someregex('y') == 'Y'
True
>>> someregex('y') == 'y'
True

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

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 марта 2019

Звучит так, будто вам нужен некоторый подкласс строки, который не учитывает регистр при сравнении.

class CaseInsensitiveString(str):
    def __eq__(self, other):
        """
        This overloads the == operator to make it perform a case-insensitive comparison
        """
        return self.lower() == other.lower()

Использование этого подкласса:

>>> CaseInsensitiveString('y') == 'Y'
True

>>> CaseInsensitiveString('y') == 'y'
True
0 голосов
/ 29 марта 2019

Вы можете проверить это следующим образом:

>>> import re
>>> re.match('^[yY]$', 'y')
<re.Match object; span=(0, 1), match='y'>
>>> re.match('^[yY]$', 'Y')
<re.Match object; span=(0, 1), match='Y'>
>>> re.match('^[yY]$', 'X')# something that doesn't match gives None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...