Сравниваем строки Python: какие бывают операторы и методы, как их использовать

Представьте, что вы работаете с крупным проектом. Когда вы пишете очередную строчку, вы не можете быть на 100% уверенными, что не продублировали уже существующую. А ведь некоторые значения могут совпадать, отличаясь лишь заглавными буквами. Кроме того, иногда требуется определить, какая из строк лексикографически больше. 

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

Цели и задачи

Строки Python – это последовательность символов. Например, в строках могут быть написаны буквы, цифры, знаки препинания.  А различные операции с одинаковыми строками необходимы для их объединения, повторения, обращения к символам по индексам и тому подобное.

Сравнение базируется на последовательном сопоставлении знаков. Допустим, мы написали две строки. Анализ начинается с первого символа. То есть алгоритм смотрит, одинаковые они или нет. Если отличия отсутствуют, переходим ко второму. Если и они одинаковые, то к третьим и так до того момента, пока не будут выявлены отличия. Во избежание недочётов проверка выполняется по Юникоду, то есть международному стандарту кодирования.

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

Если нужно проанализировать запись, в которой присутствуют одни цифры, то сравнивается их числовой порядок. 

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

Первый и наиболее распространенный метод сравнения строк в Python – обращение к операторам сравнения "<", ">", "<=", ">=", "==", и "!=". 

Для наглядности представим их в таблице на примере английских слов «dog» и «cat». Здесь представлены обозначения операторов, их описания и пример использования. 

Когда условия выполняются, система оповещает, что слова идентичны, присваивая им значение true. Когда появляются отличия, появляется значение false, то есть условия не соблюдаются.

Порядковое значение символа тоже легко узнать, для этого существует специальная команда.

ord(символ)

Допустим, нам нужно определить порядковое значение буквы «X» с верхним регистром и буквы «x» с нижним. Тогда команда будет выглядеть так.

print('Порядковое значение Х = ', ord('X'), '; а x = ', ord('x'))

Иногда в последовательности символом расположены идентичные подстроки. Например, Green и Green Fruit. Тогда большей будет считаться та, где больше символов, то есть Green Fruit.

Другие способы сравнения строк в Python

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

  1. Если строки ввели с клавиатуры.

Когда строки вводят с клавиатуры, работают те же операторы, которых мы уже рассмотрели выше. 

Допустим, мы хотим сравнить 2 строки в 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 – конструкция, с помощью которой анализируются все возможные варианты. 

В результате мы сможем вводить фразы или слова в соответствующие поля, а система определит отношение последовательностей.

  1. Когда не нужно учитывать регистр.

Если вам нужно сравнить строку со строкой в Python без учета регистра, можно использовать методы "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() приводит первую строку к верхнему регистру. В последней – приводит нижнюю строку к нижнему регистру.

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

  1. Когда применяются методы языка.

В эту группу входят ещё несколько методов.

  • Метод сравнения __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().

Метод "startswith()" определяет, начинается ли строка с определенной подстроки, в то время как метод "endswith()" определяет, заканчивается ли строка определенной подстрокой. Они возвращают булевое значение, указывающее на соответствие или несоответствие.

Их синтаксис имеет такой формат.

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

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

Пишем код.

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

print(example_string.startswith("Строка"))

print(example_string.endswith("метода"))

Результат в обоих случаях будет True.

  1. Когда применяются регулярные выражения.

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

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

Для использования регулярных выражений в Python необходимо импортировать модуль re. 

Затем напишем список слов и регулярное выражение. В нашем случае это подстрока «berry» и названия ягод на английском.

Код будет выглядеть следующим образом.

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 в своем название")

В ответ система выдаст выражения, частью которых является набор символов «berry». В нашем примере это cowberry и blackberry.

То есть таким образом, мы создаём удобный фильтр для поиска нужных выражений. Это открывает возможности для более гибкой и точной обработки текстовых данных.

Как повысить надёжность и безопасность сайта на Python

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

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

Выбирайте выгодные предложения. 

Перенос сайта в RU-CENTER за 1 рубль https://www.nic.ru/info/master-transfer/

Подведём итоги

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

Всё ещё остались вопросы?