Python: поиск в строке

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

Для решения наших задач определим строки:

# исходная строка
string = 'Some string for example.'
# подстрока, которая явно входит в исходную строку
substring = 'string'
# подстрока, которая явно не ходит в исходную строку
other_substring = 'other string'

Задача №1 — узнать, входит ли подстрока в строку.  Операция substring in string вернет нам в результате логический ответ: True в случае, если substring входит в строку, и False в случае, если не входит. Для наглядности приведу ниже пример.

# Для начала хотим узнать, входит ли подстрока в строку
if substring in string:
    print ('Подстрока "%s" входит в строку "%s"' % (substring, string))
else:
    print ('Подстрока "%s" не входит в строку "%s"' % (substring, string))

# Та же самая процедура с другой подстрокой
if other_substring in string:
    print ('Подстрока "%s" входит в строку "%s"' % (other_substring, string))
else:
    print ('Подстрока "%s" не входит в строку "%s"' % (other_substring, string))

Задача №2 — узнать позицию вхождения подстроки в строку.

Данную задачу решаем с помощью функции find(self, sub[, start[, end]]). Сразу перейдем к примерам:

# Узнаем, с какой позиции подстрока входит в строку
print(string.find(substring))
# 5
# Ищем, начиная с позиции 20
print(string.find(substring, 20))
# 44
# Ищем в диапазоне позиций 20 - 30
print(string.find(substring, 20, 30))
# -1

# И смотрим на результат, если подстрока не входит в строку
print(string.find(other_substring))
# -1

Далее стоит перед нами задача №3 — вычислить количество вхождений подстроки в строку. С ней легко справляется функция count(self, sub[, start[, end]])

# Нам интересно количество вхождений подстроки в строку
print(string.count(substring))
# 2

Задача №4 — проверить входит ли подстрока в строку без учета регистра. Для этого мы воспользуемся функцией преобразования символов строки в нижний/верхний регистр и применим к примеру №1.

# Для начала хотим узнать, входит ли подстрока в строку
if substring.lower() in string.lower():
    print ('Подстрока "%s" входит в строку "%s"' % (substring, string))
else:
    print ('Подстрока "%s" не входит в строку "%s"' % (substring, string))

# Та же самая процедура с другой подстрокой
if other_substring.upper() in string.upper():
    print ('Подстрока "%s" входит в строку "%s"' % (other_substring, string))
else:
    print ('Подстрока "%s" не входит в строку "%s"' % (other_substring, string))

На этом я остановлюсь, пожалуй. Если возникли вопросы, пожелания или предложения, то оставляйте комментарии. Отвечу всем.

Kamo Petrosyan Автор

Комментарии

    Enot

    (Март 5, 2014 - 2:09 дп)

    Сейчас все будет.
    Решил вам немного помочь и послал этот пост в социальные закладки.
    Огромное человеческое спасибочки !
    Я бы сказала о монументальности, грандиозности некоторых сюжетов.
    Что-то такое слышал, но не так подробно, а откуда материал брали?
    Должен признать, вебмастер зачетно накропал.
    Вот.

Добавить комментарий

Ваш e-mail не будет опубликован.