Home > Mobile >  python: find the last appearance of a word (of a list of words) in a text
python: find the last appearance of a word (of a list of words) in a text

Time:10-26

given a list of stop words and a string:

list_stop_words = ['for', 'the', 'with']
mystring = 'this is the car for the girl with the long nice red hair'

I would like to get the text starting from the end up to the first stop word of the list.

expected result 'the long nice red hair'

I tried with several for loops but it is super cumbersome there should be a straight way, probably even a one liner.

my super verbose solution:

list_stop_words = ['for', 'the', 'with']
mystring = 'this is the car for the girl with the long nice red hair'

reversed_sentence =mystring.split()[::-1]
for i,word in enumerate(reversed_sentence):
    if word in list_stop_words:
        position = i
        words = reversed_sentence[0:i 1]
        print(' '.join(words[::-1]))
        break
for word in mastering[::-1]:

Any suggestion for a better approach?

EDIT AFTER THE ANSWER (SEE BELLOW) enter image description here

CodePudding user response:

you can try something like this

mystring[max([mystring.rfind(stop_word) for stop_word in list_stop_words]):]

basically you find the last occurence of each word with rfind then you find the last from all the words with max then you slice it out

  • Related