Попробуйте перечисление.
Поскольку вы действительно ищете только позицию первого слова в любой строке поиска, мы можем разделить это тоже, просто попытавшись найти совпадение с первым словом.
Вот одна строка, которая решает проблему:
search_str = "Gordian Capital"
[k for k, v in enumerate(sentence.split()) if v.lower() == search_str.split()[0].lower()]
Результат:
[4]
Вот предложение с более чем одной гордианской столицей.
sentence = "the Bloomberg announced today that Gordian Capital will implement the solution to help Gordian Capital's clients pursue new fund opportunities faster, says Gordian Capital."
[k for k, v in enumerate(sentence.split()) if v.lower() == search_str.split()[0].lower()]
Результат:
[5, 13, 22]
Примечание. Поскольку Python чувствителен к регистру, для лучшего соответствия мы вводим наши термины в нижнем регистре.
Эта часть:
search_str.split()[0].lower()
Разбивает символ пробела (по умолчанию), затем мы берем первый элемент и переформатируем в нижний регистр для соответствия нашей цели.