How to Check if a String Contains a Substring in Python

In Python, a substring is a contiguous sequence of characters within a string. There are several different ways to check whether a string contains a substring in Python, each suited for different situations.

 

Using the in Operator

The most simple way to check if a string contains a substring is to use the in operator. We can write an if statement to do something if the result returned from the in condition is True or False.

 

string = 'We shall not cease from exploration'

substring = 'from'

if substring in string:
    print(True)
else:
    print(False)
True

 

Using the find() Method

The find() method can be used to search for a substring in a string. It returns the index of the first character in the substring if a match is found. If no substring is found it will return -1.

 

string = 'We shall not cease from exploration'

substring = 'from'

result = string.find(substring)

print(result)
19
string = 'We shall not cease from exploration'

substring = 'today'

result = string.find(substring)

print(result)
-1

 

Since we know find() will return -1 if no substring has been found we can make a conditional if statement to do something if the value returned is not -1.

 

string = 'We shall not cease from exploration'

substring = 'today'

if string.find(substring) != -1:
    print(True)
else:
    print(False)
False

 

Find Substring After a Start Index

The find() the method supports searching for a substring after a specific index. This is done by passing the number of the index as the second parameter.

 

string = 'We shall not cease from exploration'

substring = 'shall'

if string.find(substring, 10) != -1:
    print(True)
else:
    print(False)
False

 

Find Substring Before an End Index

To find substrings before an index, pass a third argument into find() containing the last index to search.

 

string = 'We shall not cease from exploration'

substring = 'shall'

if string.find(substring, 0, 5) != -1:
    print(True)
else:
    print(False)
False

 

Using the index() Method

It is also possible to search for a substring using the index() method. It works in a similar way to the find() method except it will throw an error if the substring is not found. As a result, it will have to be wrapped in a try except block with an else statement at the end to do something if a substring was found.

 

string = 'We shall not cease from exploration'

substring = 'food'

try:
    string.index(substring)
except ValueError:
    print(False)
else:
    print(True)
False

 

note - like find(), index() also accepts a secondary start index and a tertiary end index argument.

 

Conclusion

You now know how to search for a substring in Python. The cleanest way to achieve this is with the in operator but if you need more control the find() method is better.

string substring find