Сравнение строк

Строка в Python – это набор символов, находящийся в кавычках. Язык программирования позволяет проводить операции сравнения строк, для этого используются следующие операторы: <, <=, ==, !=, >, >=. Сравнение строк имеет ряд своих особенностей, отличающихся от сравнения чисел.

Больше / Меньше

Сравнение больше или меньше выполняется с помощью операторов > и < соответственно. Например, сравним строки со словом apple и banana:

print("apple" > "banana")

False
print("apple" < "banana")

True

Логично предположить, что apple находится перед banana, а буква «a» идет перед «b», что и дает такой результат. Но на деле все несколько сложнее. Проверим равенство apple и Apple:

print("apple" == "Apple")

False
print("apple" > "Apple")

True

Дело в том, что одинаковые буквы в разных регистрах считаются разными символами. Компьютер различает символы по присвоенным им уникальным значениям. В нашем случае, латинская «A» имеет значение 65, строчная «a» – 97. Узнать уникальное значение любого символа можно с помощью функции ord. Например:

print(ord("A"))

65

При сравнении символов или строк, Python конвертирует символы в их соответствующие порядковые значения, после чего сравнивает слева направо. В примере выше «a» больше чем «A», соответственно «apple» больше чем «Apple».

Существует функция chr, преобразовывающая порядковое значение в символ. Пример:

print(chr(1040))

А

В результате будет кириллическая А, которой соответствует значение 1040. Свои значения имеют не только буквы и цифры, но и вспомогательные знаки, вроде ? или =. Пробел » » также имеет свое значение – 32.

Человек обычно игнорирует разницу между регистрами букв, но компьютер так не делает. Решается это простой конвертацией строки в стандартный формат, например, в нижний регистр, после чего можно производить сравнение.

str1 = "apple"
str2 = "Apple"
str2.lower()
print(str1 == str1)

True

В данном примере сравнения строк в Python 3, мы привели str2 к нижнему регистру с помощью метода lower. Поэтому результатом сравнения является True.

Равенство

Проверить равенство срок можно с помощью оператора == . Например:

print("строка1" == "строка2")

False

Таким образом, выполняется точное сравнение в Python. Данные две строки не равны, поэтому результат равен False.

Иногда возникает ситуация, когда две строки содержат одинаковые символы, но они переставлены местами. Понятно что такие строки будут не равны. Если нужно сделать проверку, на то, что символы в строках одинаковые, но просто переставлены местами, то можно поступить следующим способом.

Превратить строку в список и отсортировать. Проверяем результат сравнения и выводим содержимое отсортированных списков.

strA = "abcde"
strB = "abdec"
print(sorted(list(strA)) == sorted(list(strB)))
print(sorted(list(strA)))
print(sorted(list(strB)))

True
['a', 'b', 'c', 'd', 'e']
['a', 'b', 'c', 'd', 'e']

Не равно

Оператор != проверяет, верно ли то, что строки не равны. Например:

print("abc" != "zxc")

True

Поскольку abc не равняется zxc.

Больше или равно / Меньше или равно

Операторы <= и >= определяют, верно ли утверждение, что одна строка больше/меньше или равна другой. Проще говоря, если выполняется хотя бы одно условие, то будет True. Например:

print("abc" <= "bcd")

True

Поскольку abc меньше чем bcd.

print("abc" >= "abc")

True

Поскольку обе строки равны.