Haikson

[ Everything is possible. Everything takes time. ]

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))
На этом я остановлюсь, пожалуй. Если возникли вопросы, пожелания или предложения, то оставляйте комментарии. Отвечу всем.