Я бы сделал обертку , чтобы вы могли быть неинвазивными. Минимально, например ...:
class CaseInsensitively(object):
def __init__(self, s):
self.__s = s.lower()
def __hash__(self):
return hash(self.__s)
def __eq__(self, other):
# ensure proper comparison between instances of this class
try:
other = other.__s
except (TypeError, AttributeError):
try:
other = other.lower()
except:
pass
return self.__s == other
Теперь if CaseInsensitively('MICHAEL89') in whatever:
должен вести себя так, как требуется (независимо от того, является ли правая часть списком, комментарием или набором). (Может потребоваться больше усилий для достижения аналогичных результатов при включении строк, избегать предупреждений в некоторых случаях, касающихся unicode
и т. Д.).