Есть некоторая логика, которую вы не указали, но что-то вроде следующего может помочь:
def find_distance(sentence, word1, word2):
distances = []
while sentence != "":
_, _, sentence = sentence.partition(word1)
text, _, _ = sentence.partition(word2)
if text != "":
distances.append(len(text.split()))
return distances
И если вы вызовете это с вашим предложением, вы получите желаемый результат[15, 6]
print(find_distance(phrase, "Elon Musk", "SpaceX"))
Обратите внимание, что поведение для случая, подобного Elon Musk is a technology Elon Musk entrepreneur ...
, должно быть определено.Какой случай вы хотите взять?Первый или второй?