Здесь мы увидим несколько методов сравнения двух строк в Python.

Содержание

Способ 1: использование оператора ==

Вы можете использовать оператор ==, чтобы проверить, равны ли две строки в Python.

string1 = "USA"
string2 = "USA"

# Compare string1 and string2 for equality
if string1 == string2:
    print("The strings are equal")
else:
    print("The strings are not equal")

В коде определены две строковые переменные string1 и string2, обе со значением «США». Затем он проверяет, равны ли две строки, с помощью оператора ==.

  • Если две строки равны, программа выведет «Строки равны», в противном случае — «Строки не равны». Поскольку две строки действительно равны, на выходе будет «Строки равны».
Output: The strings are equal

Способ 2: использование оператора is

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

string1 = "United Kingdom"
string2 = "UNITED KINGDOM"

# Check if string1 and string2 refer to the same string in memory
if string1 is string2:
    print("The strings are the same string")
else:
    print("The strings are not the same string")

В этом коде создаются две строковые переменные: string1 и string2. Буквы в них написаны по-разному: в первой все буквы в верхнем регистре, а во второй — в нижнем.

Затем код использует оператор is, чтобы узнать, указывают ли эти две строки на один и тот же объект в памяти.

Output: The strings are not the same string

Способ 3: использование функции cmp

Функция cmp возвращает -1, если первая строка меньше второй, 0, если они равны, и 1, если первая строка больше второй.

def cmp(a, b):
    return(a > b) -(a < b) 
    
string1 = "Brazil"
string2 = "Brazil"

# Compare string1 and string2 using the cmp() function
if cmp(string1, string2) == 0:
    print("The strings are equal")
elif cmp(string1, string2) < 0:
    print("The first string is less than the second")
else:
    print("The first string is greater than the second")

В приведенном выше коде определяется функция cmp(), которая принимает два аргумента и возвращает 1, если первый аргумент больше второго, -1, если он меньше второго, и 0, если они равны.

  • Он использует функцию cmp() для сравнения строк1 и строки2 и на основе результата выводит сообщение.

Способ 4: использование функции strcoll

Функция strcoll аналогична cmp, но учитывает правила сравнения строк, специфичные для локали.

import locale

# Set the locale to en_US.UTF-8
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

# Define two string variables, string1 and string2
string1 = "cafe"
string2 = "caff"

# Use the strcoll() function to compare string1 and string2
if locale.strcoll(string1, string2) == 0:
    print("The strings are equal")
elif locale.strcoll(string1, string2) < 0:
    print("The first string is less than the second")
else:
    print("The first string is greater than the second")

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

  • Затем код устанавливает локаль en_US.UTF-8 с помощью функции setlocale(). Он определяет две строковые переменные, string1 и string2, и использует функцию strcoll() для их сравнения.

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

Метод 5: использование пользовательского метода

Мы собираемся создать функцию, которая принимает две строки в качестве аргументов и возвращает True, если они равны(без учета регистра), или False в противном случае.

# Define a function to compare two strings while ignoring case
def string_compare(str1, str2):
    if str1.lower() == str2.lower():
        return True
    else:
        return False

# Call the string_compare() function with "Canada" and "canada" as arguments
result = string_compare("Canada", "canada")

# Print the result
print(result)

Приведённый выше код определяет функцию string_compare(). Она сравнивает две строки — str1 и str2 — без учёта регистра. Если строки равны, функция возвращает True, в противном случае — False.

  • Функция string_compare() вызывается с «Канадой» и «Канадой» в качестве аргументов, а полученное логическое значение присваивается переменной результата. Наконец, значение результата выводится на консоль.

Метод 6: использование !=

Оператор!= используется для проверки неравенства двух значений. В контексте строк можно использовать!=, чтобы узнать, не равны ли две строки.

# Define two strings with the same value
string1 = "USA"
string2 = "USA"

# Compare the two strings for inequality
if string1 != string2:
    # If the strings are not equal, print a message
    print("The two strings are not equal")
else:
    # If the strings are equal, print a different message
    print("The two strings are equal")

В приведённом коде оператор!= используется для проверки, не является ли строка1 пустой. Поскольку «привет» не пустая строка, вывод этого кода будет «Строка не пуста».

Output: The two strings are equal

Метод 7: использование SquenceMatcher

Для сравнения двух строк и определения степени их сходства вы можете воспользоваться классом SequenceMatcher из модуля difflib.

# Import the difflib module
import difflib

# Define two strings to be compared
string1 = "apple"
string2 = "applesauce"

# Create a SequenceMatcher object to compare the strings
s = difflib.SequenceMatcher(None, string1, string2)

# Get the similarity between the two strings
similarity = s.ratio()

# Print the similarity to the console
print(f"The similarity between the two strings is {similarity:.2f}")

Приведенный выше код импортирует модуль difflib и использует его для сравнения сходства двух строк: string1 и string2.

  • Объект SequenceMatcher создается с двумя строками в качестве аргументов, и для этого объекта вызывается метод Ratio(), чтобы получить оценку сходства между строками. Полученное значение сохраняется в переменной сходства.
  • Наконец, значение сходства выводится на консоль с помощью f-строки с точностью до двух десятичных знаков.
Output: The similarity between the two strings is 0.67

В этом случае сходство между «яблоко» и «яблочное пюре» составляет 0,67, что указывает на то, что эти две строки в некоторой степени похожи, но не идентичны.

Способ 8: использование оператора <

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

# Define two string variables
name1 = 'Python good'
name2 = 'Python is good'

# Compare the strings and print the result
if name1 < name2:
    print(name1,'is less than',name2)

В представленном коде создаются две строковые переменные – name1 и name2. После этого используется оператор if для сравнения значений этих переменных с помощью оператора «меньше» (<).

Способ 9: использование оператора >

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

# Define two string variables
name1 = 'Python is good'
name2 = 'Python good'

# Compare the strings and print the result
if name1 > name2:
print(name1,'is greater than',name2)
Output: Python is good is greater than Python good
Добавить комментарий