Строки в Python – это последовательности символов, заключенные в кавычки. Они используются в основном для записи текстовой информации. Иногда программисты сталкиваются с необходимостью сравнить их, чтобы получить некоторый результат. Как и с обычными числами, последовательности символов можно сравнивать. Однако у этого процесса есть свои особенности, о которых мы поговорим немного позже.
В настоящей инструкции будут разобраны возможные способы сравнения строк в Python и приведены наглядные примеры для каждого из них.
cloud
Чтобы сравнить 2 строки в Python, необходимо изучить работу соответствующих операторов.
Ниже в таблице мы разберем существующие операторы сравнения, а также приведем примеры для наглядного понимания принципа их работы. В примерах мы будем использовать неравные между собой последовательности символов «dog» и «cat».
Оператор |
Описание |
Пример |
== |
Оператор равенства. |
'dog' == 'cat' Результат сравнения: False |
!= |
Оператор неравенства. |
'dog' != 'cat' Результат сравнения: True |
> |
Оператор больше. |
'dog' > 'cat' Результат сравнения: True |
< |
Оператор меньше. |
'dog' < 'cat' Результат сравнения: False |
>= |
Оператор больше или равно. |
'dog' >= 'cat' Результат сравнения: True |
<= |
Оператор меньше или равно. |
'dog' <= 'cat' Результат сравнения: False |
Все рассмотренные в таблице операторы возвращают true, если условие сравнения выполняется. В противоположном случае они возвращают false.
В случае с последними четырьмя операторами из таблицы, происходит посимвольное сравнение. Сначала берутся первые символы каждой последовательности, затем вторые символы и т.д. Также стоит учитывать, что одинаковые символы не будут равными, если они имеют разный регистр. Так, например, символ «X» будет иметь меньшее значение, чем «x». Чтобы узнать порядковое значение символа, используется следующая команда:
ord(символ)
Например, найдем порядковое значение буквы «X» с верхним регистром и буквы «x» с нижним:
print('Порядковое значение Х = ', ord('X'), '; а x = ', ord('x'))
Результат продемонстрирован на картинке ниже.
Также стоит упомянуть, что при сравнении двух последовательностей символов, имеющих одинаковые подстроки в начале (например, «Orange» и «Orange Juice»), большей будет та, у которой количество символов больше.
В данной главе мы рассмотрим сравнение последовательностей символов, ввод которых был осуществлен с клавиатуры. Для этого мы будем использовать операторы сравнения (==
, !=
, <
, >
, <=
, >=
), которые были подробно разобраны в прошлой главе.
Итак, для того, чтобы сравнить две строки в Python, введенные с клавиатуры, напишем следующий код:
first_string = input('Введите первую строку:\n')
second_string = input('Введите вторую строку:\n')
if first_string > second_string:
print(f"В словаре последовательность {first_string} расположена после последовательности {second_string}")
elif first_string < second_string:
print(f"В словаре последовательность {first_string} расположена перед последовательностью {second_string}")
else:
print(f"Строки {first_string} и {second_string} - одинаковы!")
В данном коде мы считываем две последовательности символов с помощью функции input()
, а затем отрабатываем все возможные случаи, используя конструкцию if-elif-else
. Попробуем ввести разные последовательности символов и посмотрим на результат.
Вводим слова «озеро» и «река»:
Теперь введем те же слова, но наоборот. Сначала «река», а потом «озеро»:
И, наконец, введем две одинаковые последовательности:
В предыдущих разделах мы несколько раз обращали ваше внимание на важность регистров при сравнении последовательности символов. Однако это можно обойти, используя встроенные методы языка.
Чтобы сравнить строку со строкой в Python без учета регистра, необходимо использовать методы строки upper()
и противоположный ему lower()
. Первый приводит последовательность символов полностью к верхнему регистру, а второй соответственно к нижнему. Их синтаксис выглядит следующим образом:
строка.upper()
строка.lower()
Давайте рассмотрим работу методов более детально на примере:
example_string1 = 'orange'
example_string2 = 'ORANGE'
print(example_string1 == example_string2)
print(example_string1.upper() == example_string2)
print(example_string1 == example_string2.lower())
В примере выше мы создаем 2 строковые переменные типа string
и передаем им одинаковые значения, но в разном регистре. Далее мы выводим на экран три результата сравнения. В первом случае мы сравниваем исходные последовательности. Во втором используем метод upper()
, чтобы привести первую строку к верхнему регистру, после чего выполняем сравнение. И, наконец, в третьем приводим вторую последовательность к нижнему регистру.
Как видно по картинке выше, в первом случае последовательности символов не равны друг другу, так как они переданы с разным регистром, а во втором и третьем – равны, так как над ними были выполнены преобразования.
В данном разделе инструкции мы разберем существующие методы строк, которые также помогут пользователю выполнить сравнение.
Первый рассматриваемый метод – __eq__()
. Он равнозначен оператору ==
, который мы рассматривали в самой первой главе инструкции. Его синтаксис, в отличие от других языков программирования, выглядит следующим образом:
первая_строка.__eq__(вторая_строка)
Теперь приведем пример, в котором воспользуемся этим методом:
first_string = input('Введите первую строку:\n')
second_string = input('Введите вторую строку:\n')
if first_string.__eq__(second_string):
print("Последовательности {} и {} - одинаковы!".format(first_string,second_string))
else:
print("Последовательности {} и {} - разные!".format(first_string,second_string))
В результате выполнения кода мы получим следующее:
Следующие два метода, которые мы рассмотрим, – startswith()
и endswith()
. Первый из двух методов используется в тех случаях, когда необходимо выполнить сравнение элементов строки в Python, расположенных в ее начале, с заданным шаблоном символов. Второй работает точно так же, но сравнивает не с началом последовательности, а с ее концом.
Синтаксис startswith()
и endswith()
выглядит следующим образом:
исходная_строка.startswith(шаблон)
исходная_строка.endswith(шаблон)
Рассмотрим их применение на примере ниже:
example_string = "Строка написана для проверки работы метода"
print(example_string.startswith("Строка"))
print(example_string.endswith("метода"))
Результат работы кода представлен на картинке ниже.
Кроме рассмотренных методов и операторов в Python возможно использовать регулярные выражения для сравнения строк.
Регулярные выражения – это определенный шаблон символов, по которому происходит отбор строк. Пользователь может создать уникальный шаблон и сравнить с ним необходимые строки или целый текст.
В качестве примера создадим список, содержащий название ягод на английском языке, и регулярное выражение, которое будет сравниваться с ними и возвращать только те последовательности, что содержат в своем название подстроку «berry».
Ниже напишем код для реализации поставленной задачи. Чтобы использовать регулярные выражения в своем коде, необходимо в первую очередь импортировать модуль re
.
import re
example_list = ['cowberry', 'watermelon', 'cherry', 'blackberry']
expression = re.compile('berry')
for berry in example_list:
if expression.search(berry):
print(f"{berry} - эта ягода содержит подстроку berry в своем название")
В результате, после сравнения регулярного выражения со списком названий ягод, мы получаем следующее:
Как видно по картинке выше, всего две ягоды подошли под созданный нами фильтр.
Подготовили для вас выгодные тарифы на облачные серверы
В данной инструкции были продемонстрированы основные способы сравнения строк в Python. Все они уникальны по-своему, поэтому выбор того или иного способа зависит от конкретной ситуации. Надеемся, что после прочтения статьи, данный процесс не будет вызывать у вас затруднений.