foo = "abcdefc"
# Using find()
foo.find('c')
# Output: 2
foo.find('g')
# Output: -1
# Using index()
# foo.index() is like foo.find(),
# But when the substring is not found, it raises an exception.
foo.index('h')
# ValueError: substring not found
my_var = 'mummy'. #Find the position of 'm'
#Using find - find returns the index for the first instance from the left.
my_var.find('m')
# Output: 0
#Using rfind - rfind returns the index for the first instance from the right.
my_var.rfind('m')
# Output: 3
# With find() and rfind(), when substring is not found, it returns -1.
#NB: You can use index() and rindex(). In this case, when the substring is not
# found, it raises an exception.
string = "Hello World"
string_slice = string[1:10] # "ello Worl" (index 1 up to 10)
string_last_chars = string[-5:] # "World" (5th index from last to the end)
H = string[0] # "H"
word = 'Hello'
to_find = 'l'
# in one line
print([i for i, x in enumerate(word) if x == to_find])
import re
# matches_position_start will be a list of starting index positions
matches_start = re.finditer(word.lower(), string.lower())
matches_position_start = [match.start() for match in matches_start]
# matches_position_end will be a list of ending index positions
matches_end = re.finditer(word.lower(), string.lower())
matches_position_end = [match.end() for match in matches_end]