Метод find()
Метод find()
похож на метод index()
, который Вы уже знаете - ищет подстроку и возвращает индекс первого появления этой подстроки, но:
- он безопаснее - он не генерирует ошибку для аргумента, содержащего несуществующую подстроку (возвращается
-1
); - он работает только со строками - не пытайтесь применить его к какой-либо другой последовательности.
Посмотрите на код в редакторе. Вот как Вы можете его использовать.
Код печатает:
1
-1
output
Примечание: не используйте find()
, если Вы только хотите проверить, встречается ли один символ в строке - оператор in
будет значительно быстрее.
Вот еще один пример:
t = 'theta'
print(t.find('eta'))
print(t.find('et'))
print(t.find('the'))
print(t.find('ha'))
Можете ли Вы предсказать вывод? Запустите его и проверьте свои прогнозы.
Если Вы хотите выполнить поиск не с начала строки, а с любой позиции, Вы можете использовать двухпараметрический вариант find()
. Посмотрите на пример:
print('kappa'.find('a','[SPACE]'2))
Второй аргумент указывает индекс, с которого начинается поиск (он не обязательно должен быть меньше длины строки).
Среди двух букв a будет найдена только вторая. Запустите код и проверьте.
Вы можете использовать метод find()
для поиска всех появлений подстроки, например:
the_text = """A variation of the ordinary lorem ipsum
text has been used in typesetting since the 1960s
or earlier, when it was popularized by advertisements
for Letraset transfer sheets. It was introduced to
the Information Age in the mid-1980s by the Aldus Corporation,
which employed it in graphics and word-processing templates
for its desktop publishing program PageMaker (from Wikipedia)"""
fnd = the_text.find('the')
while fnd != -1:
print(fnd)
fnd = the_text.find('the', fnd + 1)
Код выводит индексы всех появлений артикля the, и его вывод выглядит так:
15
80
198
221
238
output
Существует также трехпараметрический вариант методаfind()
- третий аргумент указывает на первый индекс, который не будет учитываться при поиске (на самом деле это верхний предел поиска).
Посмотрите на наш пример ниже:
print('kappa'.find('a', 1, 4))
print('kappa'.find('a', 2, 4))
Второй аргумент указывает индекс, с которого начинается поиск (он не обязательно должен быть меньше длины строки).
Следовательно, измененный пример выводит:
1
-1
output
(a нельзя найти в заданных границах поиска во втором print()
.