'Getting position based on the letter

Hello this is a little complicated question. I hope you can understand what I'm trying to ask. Let's say I have:

newvar = hoavyeph8

There is an 'e' in this var. I want to know which letter is present before e and write the 'if' function. Like:

if I is present before e:
  do something

Like this. I want to know the letter present behind the another letter. And write the function. How can I?



Solution 1:[1]

newvar = "hoavyeph8"

for index, c in enumerate(newvar):
  if(c=="e"):
    print(f"{newvar[index-1]} is before e")

This will tell you what is before e, I'm not sure what you want to do next.

Solution 2:[2]

I'd recommend first reading TheRavenSpectre's answer, as that is perfectly adequate. If you want to see other ways, continue reading.

What you are asking can be solved two ways: using the find() function, or using regex (regular expressions). Regex will needlessly complicate it, while find() is perfectly adequate here.

Using find(), you can do it two ways, depending if you are only looking for one type of preceding letter or multiple (only i before e, or also a before e). To look for multiple letters:

newvar = "this is a test string"
# search for where s is preceded by a space
i = newvar.find('s')
while i != -1:
    if i > 0 and newvar[i - 1] == ' ': # first test that the index of s is not zero so it does not look outside the string
        doSomething(newvar, i - 1)
    i = newvar.find('s', i+1)

The other case would be to only look for i before e. That can be solved as such: string = "I want you to find the i before e, siE vIe"

j = string.lower().find('ie')
while j != -1:
    doSomething(string, j)
    j = string.lower().find('ie', j+1)

This code would look for all occurrences of 'ie', regardless of case, perform the operation, then continue looking.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 TheRavenSpectre
Solution 2 Eliezer Meth