Здесь мы увидим несколько методов сравнения двух строк в Python.
- Способ 1: использование оператора ==
- Способ 2: использование оператора is
- Способ 3: использование функции cmp
- Способ 4: использование функции strcoll
- Метод 5: использование пользовательского метода
- Метод 6: использование !=
- Метод 7: использование SquenceMatcher
- Способ 8: использование оператора <
- Способ 9: использование оператора >
Способ 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() для их сравнения.
Метод 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