Ответ 1
Здесь лучший вариант - использовать регулярное выражение. Python имеет модуль re
для работы с регулярными выражениями.
Мы используем простой поиск, чтобы найти положение "is"
:
>>> match = re.search(r"[^a-zA-Z](is)[^a-zA-Z]", mystr)
Это возвращает первое совпадение в качестве объекта соответствия. Затем мы просто используем MatchObject.start()
, чтобы получить начальную позицию:
>>> match.start(1)
8
Изменить: хорошая точка сделана, мы делаем группу "is"
и сопоставляем эту группу, чтобы обеспечить правильную позицию.
Как отмечается в комментариях, это делает несколько презумпций. Один из них заключается в том, что "is"
не может быть в начале или конце строки, если это так, требуется другое регулярное выражение, так как это соответствует только окруженным строкам.
Другим является то, что это подсчитывает числа как специальные символы - вы указали неалфавитный текст, который я принимаю, чтобы обозначать числа, включенные. Если вы не хотите, чтобы числа учитывались, то использование r"\b(is)\b"
является правильным решением.