Here the best option is to use a regular expression. Python has the re
module for working with regular expressions.
We use a simple search to find the position of the "is"
:
>>> match = re.search(r"[^a-zA-Z](is)[^a-zA-Z]", mystr)
This returns the first match as a match object. We then simply use MatchObject.start()
to get the starting position:
>>> match.start(1)
8
Edit: A good point made, we make "is"
a group and match that group to ensure we get the correct position.
As pointed out in the comments, this makes a few presumptions. One is that surrounded means that "is"
cannot be at the beginning or end of the string, if that is the case, a different regular expression is needed, as this only matches surrounded strings.
Another is that this counts numbers as the special characters - you stated non-alphabetic, which I take to mean numbers included. If you don't want numbers to count, then using r"(is)"
is the correct solution.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…