Главная страница » Как сравнивать строки в питоне

Как сравнивать строки в питоне

  • автор:

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Сравнение строк с использованием Python

В Python строки — это последовательности символов, которые фактически хранятся в памяти как объект. Каждый объект можно идентифицировать с помощью метода id (), как вы можете видеть ниже. Python пытается повторно использовать в памяти объекты с одинаковым значением, что также позволяет очень быстро сравнивать объекты в Python: $ python Python 2.7.9 (по умолчанию, 29 июня 2016 г., 13:08:31) [GCC 4.9.2] на linux2 Введите «help», «copyright», «credits» или «license» для получения дополнительной информации. >>> a = "abc" >>> b = "abc" >>> c = "def" >>> печать

Время чтения: 6 мин.

В Python строки — это последовательности символов, которые фактически хранятся в памяти как объект. Каждый объект можно идентифицировать с помощью id() , как вы можете видеть ниже. Python пытается повторно использовать объекты в памяти с одинаковым значением, что также позволяет очень быстро сравнивать объекты в Python:

Для сравнения строк Python предлагает несколько разных операторов. Сначала мы объясним их более подробно ниже. Во-вторых, мы рассмотрим как string и re , которые содержат методы для обработки неточных совпадений без учета регистра. В-третьих, для работы с многострочными строками очень удобен модуль difflib . Ряд примеров поможет вам понять, как их использовать.

Операторы == и! =

В качестве основного оператора сравнения вы захотите использовать == и != . Они работают точно так же, как и с целыми числами и значениями с плавающей запятой. Оператор == возвращает True если есть точное совпадение, в противном случае будет возвращено False Напротив, оператор != True если совпадений нет, а в противном случае возвращает False . Листинг 1 демонстрирует это.

В for строка, содержащая название швейцарского города «Лозанна», сравнивается с записью из списка других мест, и результат сравнения выводится на стандартный вывод.

Запустив сценарий Python сверху, вы получите следующий результат:

Операторы == и is

Python имеет два оператора сравнения == и is . На первый взгляд они кажутся одинаковыми, но на самом деле это не так. == сравнивает две переменные на основе их фактического значения. Напротив, is сравнивает две переменные на основе идентификатора объекта и возвращает True если две переменные относятся к одному и тому же объекту.

Следующий пример демонстрирует это для трех переменных с целыми значениями. Две переменные a и b имеют одинаковое значение, и Python обращается к одному и тому же объекту, чтобы минимизировать использование памяти.

Как только значение изменится, Python повторно создаст объект и назначит переменную. В следующем фрагменте кода b получает значение 2, а затем b и c относятся к одному и тому же объекту.

Эмпирическое правило , которому надо следовать , чтобы использовать == при сравнении неизменных типов (например , Интс) и is при сравнении объектов.

Дополнительные операторы сравнения

Для сравнения лексикографического порядка вы можете использовать операторы сравнения < , > , <= и >= . Само сравнение проводится посимвольно. Порядок зависит от порядка символов в алфавите. Этот порядок зависит от таблицы символов, которая используется на вашем компьютере при выполнении кода Python.

Имейте в виду, что порядок чувствителен к регистру. Например, латинский алфавит: «Автобус» стоит перед «автобусом». В листинге 2 показано, как эти операторы сравнения работают на практике.

Запустив сценарий Python сверху, вы получите следующий результат:

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

В предыдущих примерах основное внимание уделялось точному совпадению строк. Чтобы позволить сравнения без учета регистра, Python предлагает специальные строковые методы, такие как upper() и lower() . Оба они напрямую доступны как методы соответствующего строкового объекта.

upper() преобразует всю строку в прописные буквы, а lower() в строчные буквы соответственно. В следующем листинге, основанном на листинге 1, показано, как использовать метод lower() .

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

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

Регулярное выражение — или для краткости «регулярное выражение» — определяет определенный шаблон символов. Что касается этой темы, Джеффри Фридл написал отличную книгу под названием « Освоение регулярных выражений» <.amazon-link>, которую я очень рекомендую.

Чтобы использовать этот механизм в Python, сначала импортируйте модуль re, а затем определите конкретный шаблон. Опять же, следующий пример основан на листинге 1 . Шаблон поиска соответствует «заливу» и начинается со строчной или прописной буквы. А именно, следующий код Python находит все строки, в которых встречается шаблон поиска, независимо от того, в какой позиции строки — в начале, в середине или в конце.

Результат выглядит следующим образом и соответствует "Bayswater", "Table Bay" и "Bombay" из списка мест:

Многострочные и списковые сравнения

Пока что наши сравнения касались лишь нескольких слов. Использование difflib Python также предлагает способ сравнения многострочных строк и целых списков слов. Вывод может быть настроен в соответствии с различными форматами инструментов сравнения.

Следующий пример ( листинг 5 ) сравнивает две многострочные строки построчно и показывает как удаления, так и добавления. После инициализации Differ в строке 12 сравнение выполняется с помощью compare() в строке 15. Результат выводится на стандартный вывод (строка 18).

Запуск сценария создает результат, как показано ниже. Строки с удалениями обозначаются — тогда как строки с добавлением начинаются со знака + Кроме того, строки с изменениями начинаются с вопросительного знака. Изменения обозначаются ^ в соответствующей позиции. Линии без индикатора все те же.

Заключение

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

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

Сравнение строк в Python можно выполнить с помощью операторов равенства (==) и сравнения (<,>,! =, <=,> =). Специальных методов для сравнения двух строк не существует.

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

Давайте рассмотрим несколько примеров для сравнения строк.

Обе строки абсолютно одинаковы, следовательно, они равны. Таким образом, в этом случае оператор равенства возвращает True.

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

Посмотрим, учитывается ли при сравнении регистр или нет? Также, если «а» идет «а»?

Таким образом, «Apple» меньше, чем «apple», из-за их значений Unicode. Мы используем функцию ord() для печати значения кодовой точки Unicode символов.

Что, если одна из строк состоит из второй строки и некоторых дополнительных символов?

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

Что, если мы используем операторы <And> для сравнения двух равных строк?

Очевидно, обе строки ни меньше, ни больше, чем другая. Следовательно, в обоих случаях результат неверен.

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

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

Как проверить, равны ли две строки?

В этом примере мы сравним две строки и проверим, равны ли они, используя оператор equal.

Как проверить, больше ли строка, чем другая?

В этом примере мы возьмем две строки: str1 и str2 и проверим, больше ли строка str1, чем другая строка str2, используя оператор “greater than”.

Как проверить, меньше ли строка, чем другая?

В этом примере мы возьмем две строки: str1 и str2 и проверим, меньше ли строка str1, чем другая строка str2, используя оператор «less».

Функция, сравнивающая две строки

Теперь мы напишем функцию, которая принимает две строки в качестве параметров и сравнивает их. Функция возвращает ноль – если строки равны, отрицательное значение – если первая строка меньше второй строки, и положительное значение – если первая строка больше второй строки.

Давайте напишем программу в Python, которая использует эту функцию и сравнивает две строки.

В этом руководстве на примерах Python мы узнали, как сравнивать две строки.

Как сравнить строки в Python? Операторы сравнения строк

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

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

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

  • оператор < , «меньше»;
  • оператор <= , «меньше или равно;
  • оператор == , «равно»;
  • оператор != , «не равно»;
  • оператор > , «больше»;
  • оператор >= , «больше или равно».

1-20219-07963f.png

Использование оператора «больше/меньше»

Ниже вы увидите простейший пример сравнения строк в Python с помощью соответствующих операторов: > и < . Давайте сравним строки со словами banana и apple:

Так как буква «a» находится перед «b», слово apple будет находиться перед словом banana, что логично (то есть banana больше, чем apple). Однако всё сложнее, чем может показаться на первый взгляд. Давайте для наглядности сравним, равны ли слова Apple и apple:

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

Что касается нашей ситуации, то здесь латинская «А» имеет значение 65, в то время как значение строчной «а» равно 97.

Кстати, если хотите узнать уникальное значение какого-нибудь символа, используйте функцию ord:

При сравнении символов или строк, Python конвертирует символы в их соответствующие порядковые значения, после чего сравнивает слева направо.

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

Например, кириллическая А соответствует значению 1040. Есть свои значения у цифр, а также вспомогательных знаков, включая «?», «=», пробел.

В принципе, вы всегда можете выполнить сравнение строк в Python, предварительно конвертировав строки в один формат, к примеру, в нижний регистр (используем метод lower ):

Применение оператора «равенство»

Мы можем проверить, равны ли строки, посредством оператора == :

Естественно, строки не являются равными, т. к. выполняется точное сравнение в Python. Неравными будут и те строки, которые содержат одинаковые, но переставленные местами символы. В последнем случае есть выход: превратить нашу строку в список, отсортировать, сравнить и вывести содержимое:

Использование оператора «не равно»

Оператор != выполняет проверку неравенства:

Разумеется, результат True, ведь abc не равно zxc.

Применение операторов «больше или равно/меньше или равно»

Если при использовании оператора <= одна строка будет меньше или равна другой, мы получим True.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *