Как узнать список всех позиций слова в тексте python? Jupyter Notebook
Изучили следующее: text1.index("monstrous") Можем определить позицию когда первый раз встречается слово
list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10] [i for i, n in enumerate(list_numbers) if n == 3 Можем использовать генерацию списков (list comprehension), чтобы узнать позиции совпадений в списке. А как сделать так, чтобы список всех позиций слова в тексте выводилось?
Ответы (1 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
.index() очень похож на .find(), с одной разницей: find возвращает -1, если не находит подстроку, а index выдает ошибку.
Оба имеют еще два необязательных аргумента: .find(подстрока[, от_позиции[, до_позиции]])
string = 'aaa aaa aaa aaa'
search = 'aaa'
L = []; index = 0
while True:
index = string.find(search, index) # <-- можно указывать начальную позицию поиска
# (предыдущий индекс + длина искомой подстроки)
if index == -1: break
L.append(index)
index += len(search)
print( L ) # [0, 4, 8, 12]
Есть более компактный вариант, через модуль re:
import re
string = 'aaa aaa aaa aaa'
search = 'aaa'
L = [ match.start() for match in re.finditer(search, string) ]
print( L ) # [0, 4, 8, 12]