Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Как сравнить строки Python

Илья Ушаков
Илья Ушаков
Технический писатель
10 мая 2023 г.
1850
7 минут чтения
Средний рейтинг статьи: 5

Строки в Python – это последовательности символов, заключенные в кавычки. Они используются в основном для записи текстовой информации. Иногда программисты сталкиваются с необходимостью сравнить их, чтобы получить некоторый результат. Как и с обычными числами, последовательности символов можно сравнивать. Однако у этого процесса есть свои особенности, о которых мы поговорим немного позже.

В настоящей инструкции будут разобраны возможные способы сравнения строк в Python и приведены наглядные примеры для каждого из них.

Операторы сравнения 

Чтобы сравнить 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'))

Результат продемонстрирован на картинке ниже.

Image3

Также стоит упомянуть, что при сравнении двух последовательностей символов, имеющих одинаковые подстроки в начале (например, «Orange» и «Orange Juice»), большей будет та, у которой количество символов больше. 

Image6

Сравнение строк, введенных с клавиатуры

В данной главе мы рассмотрим сравнение последовательностей символов, ввод которых был осуществлен с клавиатуры. Для этого мы будем использовать операторы сравнения (==, !=, <, >, <=, >=), которые были подробно разобраны в прошлой главе.

Итак, для того, чтобы сравнить две строки в 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. Попробуем ввести разные последовательности символов и посмотрим на результат.

Вводим слова «озеро» и «река»:

Image7

Теперь введем те же слова, но наоборот. Сначала «река», а потом «озеро»:

Image4

И, наконец, введем две одинаковые последовательности:

Image2

Сравнение строк без учета регистра

В предыдущих разделах мы несколько раз обращали ваше внимание на важность регистров при сравнении последовательности символов. Однако это можно обойти, используя встроенные методы языка.

Чтобы сравнить строку со строкой в 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(), чтобы привести первую строку к верхнему регистру, после чего выполняем сравнение. И, наконец, в третьем приводим вторую последовательность к нижнему регистру.

Image8

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

Использование методов языка

В данном разделе инструкции мы разберем существующие методы строк, которые также помогут пользователю выполнить сравнение.

Метод __eq__

Первый рассматриваемый метод – __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))

В результате выполнения кода мы получим следующее:

Image1

Методы startswith() и endswith()

Следующие два метода, которые мы рассмотрим, – startswith() и endswith(). Первый из двух методов используется в тех случаях, когда необходимо выполнить сравнение элементов строки в Python, расположенных в ее начале, с заданным шаблоном символов. Второй работает точно так же, но сравнивает не с началом последовательности, а с ее концом.

Синтаксис startswith() и endswith() выглядит следующим образом:

исходная_строка.startswith(шаблон)
исходная_строка.endswith(шаблон)

Рассмотрим их применение на примере ниже:

example_string = "Строка написана для проверки работы метода"

print(example_string.startswith("Строка"))
print(example_string.endswith("метода"))

Результат работы кода представлен на картинке ниже.

Image5

Использование регулярных выражений

Кроме рассмотренных методов и операторов в 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 в своем название")

В результате, после сравнения регулярного выражения со списком названий ягод, мы получаем следующее:

Image9

Как видно по картинке выше, всего две ягоды подошли под созданный нами фильтр.

Заключение

В данной инструкции были продемонстрированы основные способы сравнения строк в Python. Все они уникальны по-своему, поэтому выбор того или иного способа зависит от конкретной ситуации. Надеемся, что после прочтения статьи, данный процесс не будет вызывать у вас затруднений.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону