Привіт, сьогодні ми досліджуємо тему, яка виникає частіше, ніж ви можете собі уявити: порівняння рядків у Python. Незалежно від того, перевіряєте ви паролі, сортуєте імена або просто шукаєте збіги тексту у списку, уміння порівнювати рядки — це важлива навичка для кожного програміста Python.
У цьому посібнику ми розглянемо всі доступні методи порівняння рядків у Python, пояснимо, чим корисний кожен з них, та подивимося на багато прикладів, щоб усе стало зрозуміло. Готові стати майстром порівняння рядків? Почнімо!
Що Таке Порівняння Рядків?
Перш ніж перейти до конкретних методів, давайте уточнимо, що означає порівняння рядків. У Python порівняння рядків включає перевірку, чи рівні два рядки, чи один рядок "більший" за інший (в алфавітному порядку), або чи відповідають рядки певним критеріям (наприклад, незалежно від регістру). Python робить це легко за допомогою вбудованих операторів і функцій.
Основні Оператори Порівняння Рядків
Python має набір операторів порівняння, які відмінно працюють із рядками:
==: Перевіряє, чи два рядки точно рівні.!=: Перевіряє, чи два рядки не рівні.<,<=: Перевіряє, чи один рядок стоїть перед іншим за алфавітом.>,>=: Перевіряє, чи один рядок стоїть після іншого за алфавітом.
Приклад Операторів == та !=
Оператори == та != — це найбільш поширений спосіб перевірки, чи рядки рівні або різні. Давайте розглянемо приклади:
string1 = "hello"
string2 = "hello"
string3 = "world"
# Перевірка рівності рядків
print(string1 == string2) # Вивід: True
print(string1 == string3) # Вивід: False
# Перевірка нерівності рядків
print(string1 != string3) # Вивід: TrueУ цьому прикладі string1 та string2 однакові, тому string1 == string2 повертає True. Однак string1 та string3 різні, тому string1 == string3 повертає False.
Приклад Операторів <, <=, > та >=
Ви також можете використовувати оператори порівняння для перевірки алфавітного порядку рядків:
string1 = "apple"
string2 = "banana"
# Перевірка алфавітного порядку
print(string1 < string2) # Вивід: True
print(string1 > string2) # Вивід: FalseТут "apple" стоїть перед "banana" за алфавітом, тому string1 < string2 повертає True. Легко, чи не так?
Порівняння Без Врахування Регістру
Тепер уявіть, що ви порівнюєте введений користувачем текст, але вам не важливий регістр. Як це зробити? Дуже просто! Перетворіть обидва рядки у нижній (або верхній) регістр перед порівнянням.
string1 = "Hello"
string2 = "hello"
# Порівняння без врахування регістру
print(string1.lower() == string2.lower()) # Вивід: TrueВикористовуючи lower() для обох рядків, ми робимо порівняння незалежним від регістру. Таким чином, "Hello" і "hello" вважаються рівними.
Використання Методів startswith() та endswith()
Іноді потрібно просто перевірити, чи починається рядок із певної підрядки або чи закінчується нею. Python надає два зручних методи для цього: startswith() та endswith().
text = "Python programming is fun"
# Перевірка, чи починається текст з "Python"
print(text.startswith("Python")) # Вивід: True
# Перевірка, чи закінчується текст на "fun"
print(text.endswith("fun")) # Вивід: TrueЦі методи ідеальні для завдань, таких як перевірка, чи має ім'я файлу певне розширення, або чи починається речення з конкретного слова.
Порівняння з Операторами in та not in
Оператор in чудово підходить для перевірки, чи міститься підрядок у рядку. Аналогічно, not in перевіряє відсутність підрядка.
text = "The quick brown fox"
# Перевірка, чи містить текст "quick"
print("quick" in text) # Вивід: True
# Перевірка, чи не містить текст "slow"
print("slow" not in text) # Вивід: TrueУ цьому прикладі "quick" дійсно є частиною text, тому "quick" in text повертає True. Цей метод дуже корисний для пошуку ключових слів або перевірки, чи містить рядок певні символи.
Порівняння Рядків з is та ==
Одним із потенційно заплутаних моментів є різниця між is та ==. У Python == перевіряє, однакові значення у двох рядків чи ні, тоді як is перевіряє, чи вказують вони на один і той самий об'єкт у пам'яті.
string1 = "hello"
string2 = "hello"
string3 = string1
# Порівняння з використанням ==
print(string1 == string2) # Вивід: True
# Порівняння з використанням is
print(string1 is string2) # Вивід: True (але може бути False в інших випадках)
print(string1 is string3) # Вивід: TrueУ загальному випадку варто використовувати == для порівняння рядків. is більше підходить для перевірки, чи вказують дві змінні на один і той самий об'єкт, що зазвичай не є метою при порівнянні рядків.
Порівняння Рядків з locale.strcoll() для Чутливих до Локалі Порівнянь
Якщо ви працюєте з рядками різними мовами, вам може знадобитися порівняння, яке враховує правила локалі. Функція strcoll() із модуля locale дозволяє порівнювати рядки відповідно до правил поточної локалі.
import locale
locale.setlocale(locale.LC_ALL, 'uk_UA.UTF-8')
string1 = "apple"
string2 = "banana"
# Чутливе до локалі порівняння
print(locale.strcoll(string1, string2)) # Вивід: від'ємне число, якщо string1 < string2Ця функція повертає від'ємне число, якщо string1 стоїть перед string2, нуль, якщо вони рівні, і додатнє число, якщо string1 стоїть після string2 відповідно до правил локалі. Це може бути корисно при роботі з багатомовними даними.
Популярні Питання про Порівняння Рядків у Python
П: Яка різниця між == та is для рядків?
В: == перевіряє, однакові значення у двох рядків чи ні, тоді як is перевіряє, чи вказують вони на один і той самий об'єкт у пам'яті.
П: Як виконати порівняння без врахування регістру?
В: Використовуйте lower() або upper(), щоб перетворити обидва рядки до одного регістру перед порівнянням за допомогою ==.
П: Як перевірити, чи містить рядок певний підрядок?
В: Використовуйте оператор in. Наприклад, "apple" in "pineapple" повертає True.
Резюме
На цьому все! Ось короткий огляд того, що ми розглянули:
- Використовуйте
==та!=для базового порівняння на рівність. - Використовуйте
<,>,<=та>=для перевірки алфавітного порядку. - Використовуйте
lower()абоupper()для порівняння без врахування регістру. - Використовуйте
inтаnot inдля перевірки наявності підрядка. - Використовуйте
locale.strcoll()для порівняння, чутливого до локалі.
Практикуйтеся з цими методами, і незабаром порівняння рядків у Python стане для вас другою натурою!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ