Check if String Contains Substring in Python
Checking if a string contains a substring is one of the most common tasks in any programming language. Python offers many ways to check if a string contains a substring. The simplest and fastest way to check whether a string contains a substring or not in Python is using the "in" operator , which is used as a comparison operator . Some other Python methods such as find(), index(), count() etc. also help to Check if a string contains a substring.
Using Python's "in" operator
The simplest and fastest way to check whether a string contains a substring or not in Python is the "in" operator . This operator returns true if the string contains the characters, otherwise, it returns false .
output
Python "in" operator takes two arguments, one on the left and one on the right, and returns True if the left argument string is contained within the right argument string.
More on "in" operator
Note: The "in" operator is case sensitive i.e, it will treat the Uppercase characters and Lowercase characters differently.
__contains__() function
Python String class has the __contains__() method that we can use to check if it contains another string or not. When we use Python "in" operator , internally it calls __contains__() function. The __contains__ method defines how instances of class behave when they appear at right side of in and not in operator. We can use this function directly too, but don't . Methods that start with underscores are considered semantically private , however it's recommended to use in operator for readability purposes.
Using Python's str.find() method
Another method you can use is the string.find() method . The find() method evaluate if the string contains a substring . If it does, the find() method returns the starting index of a substring within the string otherwise it returns -1 .
output
More on find() method
Using str.find() method is the less Pythonic way , but it's still accepted. It's longer and a little bit more confusing, but it still gets the job done.
Using Python Regular Expression
Regular expression is widely used for pattern matching . Python has a built-in package called re , which can be used to work with Regular Expressions . The re module contains a function called search() , it can be used to check if a string contains the specified search pattern .
example
output
Using str.count() method
If you want to count the number of occurrences of a specific substring in a string, then you can use Python count() method . If the substring is not found in a string, the function returns 0 .
I have a sub-string:
substring = "please help me out"I have another string:
string = "please help me out so that I could solve this"How do I find if substring is a subset of string using Python?
the Tin Man
156k41 gold badges209 silver badges297 bronze badges
asked Sep 9, 2011 at 11:55
0
with in: substring in string:
>>> substring = "please help me out" >>> string = "please help me out so that I could solve this" >>> substring in string Trueanswered Sep 9, 2011 at 11:57
MarcoSMarcoS
13.2k6 gold badges40 silver badges62 bronze badges
5
foo = "blahblahblah" bar = "somethingblahblahblahmeep" if foo in bar: # do something
(By the way - try to not name a variable string, since there's a Python standard library with the same name. You might confuse people if you do that in a large project, so avoiding collisions like that is a good habit to get into.)
answered Sep 9, 2011 at 11:57
AmberAmber
487k81 gold badges616 silver badges545 bronze badges
1
If you're looking for more than a True/False, you'd be best suited to use the re module, like:
import re search="please help me out" fullstring="please help me out so that I could solve this" s = re.search(search,fullstring) print(s.group())s.group() will return the string "please help me out".
the Tin Man
156k41 gold badges209 silver badges297 bronze badges
answered Nov 23, 2011 at 14:09
ewegesinewegesin
2293 silver badges3 bronze badges
2
People mentioned string.find(), string.index(), and string.indexOf() in the comments, and I summarize them here (according to the Python Documentation):
First of all there is not a string.indexOf() method. The link posted by Deviljho shows this is a JavaScript function.
Second the string.find() and string.index() actually return the index of a substring. The only difference is how they handle the substring not found situation: string.find() returns -1 while string.index() raises an ValueError.
answered Jan 19, 2015 at 20:40
Samuel LiSamuel Li
3275 silver badges6 bronze badges
Thought I would add this in case you are looking at how to do this for a technical interview where they don't want you to use Python's built-in function in or find, which is horrible, but does happen:
string = "Samantha" word = "man" def find_sub_string(word, string): len_word = len(word) #returns 3 for i in range(len(string)-1): if string[i: i + len_word] == word: return True else: return False
the Tin Man
156k41 gold badges209 silver badges297 bronze badges
answered Mar 27, 2015 at 19:08
1
You can also try find() method. It determines if string str occurs in string, or in a substring of string.
str1 = "please help me out so that I could solve this" str2 = "please help me out" if (str1.find(str2)>=0): print("True") else: print ("False")
Guy Avraham
3,2743 gold badges37 silver badges46 bronze badges
answered Sep 27, 2014 at 14:29
In [7]: substring = "please help me out" In [8]: string = "please help me out so that I could solve this" In [9]: substring in string Out[9]: True
answered Sep 9, 2011 at 11:57
Fredrik PihlFredrik Pihl
43.4k7 gold badges81 silver badges130 bronze badges
def find_substring(): s = 'bobobnnnnbobmmmbosssbob' cnt = 0 for i in range(len(s)): if s[i:i+3] == 'bob': cnt += 1 print 'bob found: ' + str(cnt) return cnt def main(): print(find_substring()) main()
answered Jun 23, 2015 at 3:30
1
Can also use this method
if substring in string: print(string + '\n Yes located at:'.format(string.find(substring)))answered Nov 21, 2016 at 15:38
jackotonyejackotonye
3,37619 silver badges28 bronze badges
Instead Of using find(), One of the easy way is the Use of 'in' as above.
if 'substring' is present in 'str' then if part will execute otherwise else part will execute.
answered May 7, 2018 at 11:42
Dcoder14Dcoder14
1,6513 gold badges11 silver badges22 bronze badges