In this article, we'll examine four ways to use Python to check whether a string contains a substring. Each has their own use-cases and pros/cons, some of which we'll briefly cover here:
1) The in
Operator
The easiest way to check if a Python string contains a substring is to use the in
operator. The in
operator is used to check data structures for membership in Python. It returns a Boolean (either True
or False
) and can be used as follows:
fullstring = "StackAbuse"
substring = "tack"
if substring in fullstring:
print "Found!"
else:
print "Not found!"
This operator is shorthand for calling an object's __contains__
method, and also works well for checking if an item exists in a list.
2) The String.index()
Method
The String type in Python has a method called index
that can be used to find the starting index of the first occurrence of a substring in a string. If the substring is not found, a ValueError
exception is thrown, which can to be handled with a try-except-else block:
fullstring = "StackAbuse"
substring = "tack"
try:
fullstring.index(substring)
except ValueError:
print "Not found!"
else:
print "Found!"
This method is useful if you need to know the position of the substring, as opposed to just its existence within the full string.
3) The String.find()
Method
The String type has another method called find
which is more convenient to use than index
, because we don't need to worry about handling any exceptions. If find
doesn't find a match, it returns -1, otherwise it returns the left-most index of the substring in the larger string.
fullstring = "StackAbuse"
substring = "tack"
if fullstring.find(substring) != -1:
print "Found!"
else:
print "Not found!"
If you'd prefer to avoid the need to catch errors, then this method should be favored over index
.
4) Regular Expressions (REGEX)
Regular expressions provide a more flexible (albeit more complex) way to check strings for pattern matching. Python is shipped with a built-in module for regular expressions, called re
. The re
module contains a function called search
, which we can use to match a substring pattern as follows:
from re import search
fullstring = "StackAbuse"
substring = "tack"
if search(substring, fullstring):
print "Found!"
else:
print "Not found!"
This method is best if you are needing a more complex matching function, like case insensitive matching. Otherwise the complication and slower speed of regex should be avoided for simple substring matching use-cases.
About the Author
This article was written by Jacob Stopak, a software consultant and developer with passion for helping others improve their lives through code. Jacob is the creator of Initial Commit - a site dedicated to helping curious developers learn how their favorite programs are coded. Its featured project helps people learn Git at the code level.
from Planet Python
via read more
No comments:
Post a Comment