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

Как сравнивать строки в Python Программирование и разработка

Сравнение строк Python — это обычная повседневная задача программирования, например, для интерпретации пользовательского ввода, изучения огромных наборов данных или работы с текстовыми отчетами. Мы познакомим вас с несколькими способами сравнения строк Python и приведем более понятные примеры.

Сравнение строк Python: операторы и функции

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

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

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

оператор Значение Пример возвращаемое значение
== Струны одинаковые “Hallo” == “hallo” неправильный
!= Строки не равны “Hallo” != “hallo” истинный
< лексикографический порядок меньше “Australien” < “Simbabwe” истинный
> лексикографический порядок выше “Australien” > “Simbabwe” неправильный
<= лексикографический порядок меньше или равен “Deutschland” <= “Amerika” неправильный
>= лексикографический порядок больше или равен “Deutschland” <= “Deutschland” истинный

Здесь «лексикографический порядок» — это технический термин, обозначающий «алфавитный порядок», и означает то же самое. Слова с низким лексикографическим порядком располагаются в алфавите раньше, чем слова с высоким лексикографическим порядком. Таким образом, строка «abcd» имеет более низкий лексикографический порядок, чем строка «xyz».

Пустые места в строках имеют самый низкий лексикографический порядок среди всех символов. Поэтому, если вы возьмете первые несколько символов строки в качестве подстроки Python, эта подстрока всегда будет иметь более низкий порядок, чем исходная строка. Например, строка «Алекс» имеет более низкий лексикографический порядок, чем строка «Александр».

Также следует отметить, что лексикографический порядок Python не всегда соответствует обычному алфавитному порядку. Например, Python оценивает выражение a < bкак «истина», а само выражение a < B— как «ложь». Это связано с тем, что как в стандартах ASCII, так и в стандартах Unicode прописные буквы всегда кодируются меньшими значениями, чем строчные.

Читайте также:  Полное руководство по настройке сети в CentOS и Rocky Linux

Методы сравнения

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

метод Описание Пример возвращаемое значение
.startswith() Возвращает true, если первые несколько символов строки соответствуют другой строке “Benjamin”.startswith(“Ben”) истинный
.endswith() Возвращает true, если последние символы строки соответствуют другой строке “Benjamin”.endswith(“jasmin”) неправильный
.find() Возвращает индекс первого вхождения подстроки; если подстрока не встречается, возвращается -1. “Weihnachten”.find(“nacht”) 4

Сравнение строк в Python: примеры кода

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

Проверьте, отсортирован ли список по алфавиту

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

eingabe_liste = []
while(True):
    temp = input('Bitte Wort eingeben. Wenn Sie keine Wörter mehr eingeben möchten, bitte \'.\' eingeben')
    if temp == '.':
        break
    eingabe_liste.append(temp)
print('Ihre Eingabe: ', eingabe_liste)

i = 0
alph = 1
while(i < len(eingabe_liste) - 1):
    if(eingabe_liste[i] > eingabe_liste[i + 1]):
        print('Diese Liste ist nicht alphabetisch sortiert!')
        alph = 0
        break
    i = i + 1

if(alph == 1):
    print('Diese Liste ist alphabetisch sortiert.')

База данных людей с функцией поиска

В этом немного более сложном примере пользователю предлагается ввести фамилии и имена людей. Каждый из них вставляется в список, который, в свою очередь, интегрируется в более крупный список. При этом создается вложенный список, в котором каждый подсписок содержит имя и фамилию человека. Затем этот большой список сортируется в алфавитном порядке по фамилиям. Затем пользователь может снова ввести текст для поиска людей в базе данных. Это реализуется с помощью метода сравнения..find()

personen = []
while(True):
    temp = input('Bitte Nachname der Person eingeben. Wenn Sie keine Personen mehr eingeben möchten, bitte \'.\' eingeben')
    if temp == '.':
        break
    person = []
    person.append(temp)
    temp = input('Bitte Vorname der Person eingeben.')
    person.append(temp)
    personen.append(person)
print('Ihre Eingabe: ', personen)


# Sortierten
personen.sort()
print('Sortiert: ', personen)


# Suchfunktion
while(True):
    search = input('Bitte String eingeben, um Datenbank durchzusuchen. Wenn Sie keine Personen mehr suchen möchten, bitte \'.\' eingeben')
    if search == '.':
        break
    for i in personen:
        if(i[0].find(search) != -1 or i[1].find(search) != -1):
            print('Match gefunden: ', i[0], ', ', i[1])

Оцените статью
Блог о программировании
Добавить комментарий