How to find index of an exact word in a string in Python [duplicate] How to find index of an exact word in a string in Python [duplicate] python python

How to find index of an exact word in a string in Python [duplicate]


You should use regex (with word boundary) as str.find returns the first occurrence. Then use the start attribute of the match object to get the starting index.

import restring = 'This is laughing laugh'a = re.search(r'\b(laugh)\b', string)print(a.start())>> 17

You can find more info on how it works here.


try this:

word = 'laugh'    string = 'This is laughing laugh'.split(" ")index = string.index(word)

This makes a list containing all the words and then searches for the relevant word. Then I guess you could add all of the lengths of the elements in the list less than index and find your index that way

position = 0for i,word in enumerate(string):    position += (1 + len(word))    if i>=index:        breakprint position  

Hope this helps.


Here is one approach without regular expressions:

word = 'laugh'    string = 'This is laughing laugh'# we want to find this >>> -----# index   0123456789012345678901     words = string.split(' ')word_index = words.index(word)index = sum(len(x) + 1 for i, x in enumerate(words)             if i < word_index) => 17

This splits the string into words, finds the index of the matching word and then sums up the lengths and the blank char as a separater of all words before it.

Update Another approach is the following one-liner:

index = string.center(len(string) + 2, ' ').find(word.center(len(word) + 2, ' '))

Here both the string and the word are right and left padded with blanks as to capture the full word in any position of the string.

You should of course use regular expressions for performance and convenience. The equivalent using the re module is as follows:

r = re.compile(r'\b%s\b' % word, re.I)m = r.search(string)index = m.start()

Here \b means word boundary, see the re documentation. Regex can be quite daunting. A great way to test and find regular expressions is using regex101.com