Игнорировать случай в сравнении строк Если у меня есть две переменные, a и b, они могут быть целыми числами, float или строками. Я хочу вернуть True, если они равны (в случае строки, игнорировать регистр). Как возможно Pythonic. Ответ 1 Это самый питоновский, о котором я могу думать. Лучше попросить прощения, чем разрешения: >>> def iequal(a, b): ... try: ... return a.upper() == b.upper() ... except AttributeError: ... return a == b ... >>> >>> iequal(2, 2) True >>> iequal(4, 2) False >>> iequal("joe", "Joe") True >>> iequal("joe", "Joel") False Ответ 2 Как об этом, без причины (нахмурившись): def equal(a, b): try: return a.lower() == b.lower() except AttributeError: return a == b Ответ 3 >>> def equals_ignore_case(a,b): ... return a.upper() == b.upper() ... >>> equals_ignore_case("hello","Hello") True
Ответ 1 Это самый питоновский, о котором я могу думать. Лучше попросить прощения, чем разрешения: >>> def iequal(a, b): ... try: ... return a.upper() == b.upper() ... except AttributeError: ... return a == b ... >>> >>> iequal(2, 2) True >>> iequal(4, 2) False >>> iequal("joe", "Joe") True >>> iequal("joe", "Joel") False
Ответ 2 Как об этом, без причины (нахмурившись): def equal(a, b): try: return a.lower() == b.lower() except AttributeError: return a == b
Ответ 3 >>> def equals_ignore_case(a,b): ... return a.upper() == b.upper() ... >>> equals_ignore_case("hello","Hello") True