Python: перевірте, чи рядок містить підрядок

Перевірка того, чи містить рядок підрядок, допомагає узагальнити умови та створити більш гнучкий код. Крім того, залежно від вашої моделі домену перевірка того, чи містить рядок підрядок, також може дозволити вам зробити висновок про поля об’єкта, якщо рядок сам по собі кодує поле.

У цьому посібнику ми розглянемо як перевірити, чи містить рядок підрядок в Python.

Команда in Оператор

Найпростіший спосіб перевірити, чи містить рядок Python підрядок, це використати in оператор.

Команда in оператор використовується для перевірки структур даних на членство в Python. Він повертає логічне значення (або True or False). Щоб перевірити, чи містить рядок підрядок у Python за допомогою in ми просто викликаємо його в суперрядку:

fullstring = "StackAbuse"
substring = "tack"

if substring in fullstring:
    print("Found!")
else:
    print("Not found!")

Цей оператор є скороченням для виклику об’єкта __contains__ метод, а також добре працює для перевірки наявності елемента в списку. Варто зазначити, що це не нуль-безпечний, тому якщо наші fullstring вказував на None, буде створено виняток:

TypeError: argument of type 'NoneType' is not iterable

Щоб цього уникнути, спершу перевірте, чи вказує він на None чи ні:

fullstring = None
substring = "tack"

if fullstring != None and substring in fullstring:
    print("Found!")
else:
    print("Not found!")

Команда String.index() Метод

Тип String у Python має метод під назвою index() який можна використовувати для пошуку початкового індексу першого входження підрядка в рядок.

Якщо підрядок не знайдено, a ValueError викидається виняток, який можна обробити за допомогою блоку try-except-else:

fullstring = "StackAbuse"
substring = "tack"

try:
    fullstring.index(substring)
except ValueError:
    print("Not found!")
else:
    print("Found!")

Цей метод корисний, якщо вам також потрібно знати позицію підрядка, а не просто його існування в повному рядку. Сам метод повертає індекс:

print(fullstring.index(substring))

Однак для перевірки того, чи містить рядок підрядок, це детальний підхід.

Метод String.find().

Клас String має інший метод, який називається find() що зручніше використовувати, ніж index()головним чином тому, що нам не потрібно турбуватися про обробку винятків.

If find() не знаходить відповідності, повертає -1, інакше повертає крайній лівий індекс підрядка у більшому рядку:

Ознайомтеся з нашим практичним практичним посібником із вивчення Git з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди Git і фактично вчитися це!

fullstring = "StackAbuse"
substring = "tack"

if fullstring.find(substring) != -1:
    print("Found!")
else:
    print("Not found!")

Природно, він виконує той самий пошук, що й index() і повертає індекс початку підрядка в батьківському рядку:

print(fullstring.find(substring))

Регулярні вирази (RegEx)

Регулярні вирази забезпечують більш гнучкий (хоча і більш складний) спосіб перевірки рядків на відповідність шаблону. За допомогою регулярних виразів ви можете виконувати гнучкий і потужний пошук у значно більших пошукових просторах замість простих перевірок, як у попередніх.

Python постачається з вбудованим модулем регулярних виразів під назвою re, re модуль містить функцію під назвою search(), який ми можемо використовувати для відповідності шаблону підрядка:

from re import search

fullstring = "StackAbuse"
substring = "tack"

if search(substring, fullstring):
    print "Found!"
else:
    print "Not found!"

Цей метод є найкращим, якщо вам потрібна більш складна функція зіставлення, як-от без урахування регістру, або якщо ви маєте справу з великими просторами пошуку. В іншому випадку слід уникати ускладнень і повільної швидкості регулярних виразів для простих варіантів використання підрядків.

Про автора

Цю статтю написав Джейкоб Стопак, консультант із програмного забезпечення та розробник, який прагне допомагати іншим покращувати своє життя за допомогою коду. Яків є творцем Початкова фіксація – сайт, який допомагає допитливим розробникам дізнатися, як кодуються їхні улюблені програми. Представлений проект допомагає людям вивчати Git на рівні коду.

Часова мітка:

Більше від Stackabuse