Skip to content
Related Articles

Related Articles

Python program to find the occurrence of substring in the string

View Discussion
Improve Article
Save Article
  • Last Updated : 16 Aug, 2022

Given a list of words, extract all the indices where those words occur in the string.

Input : test_str = ‘geeksforgeeks is best for geeks and cs’, test_list = [“best”, “geeks”] 
Output : [2, 4] 
Explanation : best and geeks occur at 2nd and 4th index respectively.

Input : test_str = ‘geeksforgeeks is best for geeks and cs’, test_list = [“best”, “geeks”, “is”] 
Output : [1, 2, 4] 
Explanation : is, best and geeks occur at 1st, 2nd and 4th index respectively. 
 

Method #1 : Using list comprehension + split() + index()

In this, we perform the task of getting words from sentences using split(), and then match words from the string list to extracted strings using index().

Python3




# Python3 code to demonstrate working of
# Word occurrence positions in String
# Using list comprehension + split() + index()
 
# initializing string
test_str = 'geeksforgeeks is best for geeks and cs'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing list
test_list = ["best", "geeks", "cs"]
 
# using index() to get indices,
# list comprehension used to offer one liner
res = [test_str.split().index(ele)
       for ele in test_str.split() if ele in test_list]
         
# printing result
print("The indices list : " + str(res))

Output

The original string is : geeksforgeeks is best for geeks and cs
The indices list : [2, 4, 6]

Time Complexity: O(n)

Auxiliary Space: O(n)

Method #2 : Using list comprehension + enumerate() + split()

This is yet another way in which this task can be performed. In this task of getting indices is done using enumerate().

Python3




# Python3 code to demonstrate working of
# Word occurrence positions in String
# Using list comprehension + enumerate() + split()
 
# initializing string
test_str = 'geeksforgeeks is best for geeks and cs'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing list
test_list = ["best", "geeks", "cs"]
 
# using enumerate() to get indices,
# list comprehension used to offer one liner
res = [idx for idx, ele in enumerate(test_str.split()) if ele in test_list]
         
# printing result
print("The indices list : " + str(res))

Output

The original string is : geeksforgeeks is best for geeks and cs
The indices list : [2, 4, 6]

Time Complexity: O(n)

Auxiliary Space: O(n)


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!