- Syntax
- Example 1: Using find()
- Example 2: Searching for a Character
- Example 3: Using rfind()
- Example 4: Substring Not Found
- Example 5: Using index()
- Example 6: User Input
- Example 7: Using rindex()
- Example 8: Finding Spaces
- Example 9: Checking the Return Type
- Example 10: Searching for an Entire Word
- Common Mistakes
- Best Practices
- Key Points to Remember
Searching a string means finding whether a character or substring exists within a string or determining its position.
Python provides several built-in methods for searching strings. The most commonly used methods are:
find()rfind()index()rindex()
These methods help locate the position of characters or substrings. They are commonly used when validating input, processing text, parsing files, and extracting information.
The find() and rfind() methods return -1 if the substring is not found, whereas index() and rindex() raise a ValueError.
Syntax #
string.find(substring)
string.rfind(substring)
string.index(substring)
string.rindex(substring)
Components #
| Component | Description |
|---|---|
string |
The string to search. |
substring |
Character or sequence of characters to locate. |
find() |
Returns the first occurrence or -1. |
rfind() |
Returns the last occurrence or -1. |
index() |
Returns the first occurrence or raises ValueError. |
rindex() |
Returns the last occurrence or raises ValueError. |
Example 1: Using find() #
main.py
text = "Python Programming"
print(text.find("Program"))
Output #
7
Explanation #
find()searches for the first occurrence of"Program".- The substring begins at index
7. - Therefore,
7is returned.
Example 2: Searching for a Character #
main.py
word = "banana"
print(word.find("a"))
Output #
1
Explanation #
- The first occurrence of
"a"is at index1. find()always returns the first matching position.- Later occurrences are ignored.
Example 3: Using rfind() #
main.py
word = "banana"
print(word.rfind("a"))
Output #
5
Explanation #
rfind()searches from the end of the string.- The last
"a"is located at index5. - Therefore,
5is returned.
Example 4: Substring Not Found #
main.py
text = "Python"
print(text.find("Java"))
Output #
-1
Explanation #
"Java"does not exist in the string.find()returns-1when no match is found.- No exception is raised.
Example 5: Using index() #
main.py
text = "Python Programming"
print(text.index("Program"))
Output #
7
Explanation #
index()behaves similarly tofind()when the substring exists.- The substring begins at index
7. - The index is returned.
Example 6: User Input #
main.py
email = input("Enter your email: ")
print(email.find("@"))
Sample Input #
alice@example.com
Output #
5
Explanation #
- The user enters an email address.
find()locates the position of"@".- The returned index can be used for validation or processing.
Example 7: Using rindex() #
main.py
text = "one two one"
print(text.rindex("one"))
Output #
8
Explanation #
rindex()searches from the end of the string.- The last occurrence of
"one"begins at index8. - That index is returned.
Example 8: Finding Spaces #
main.py
sentence = "Learn Python Today"
print(sentence.find(" "))
Output #
5
Explanation #
- The first space occurs after
"Learn". - Spaces are characters like any other.
- Their positions can also be searched.
Example 9: Checking the Return Type #
main.py
text = "Python"
result = text.find("P")
print(type(result))
Output #
<class 'int'>
Explanation #
find()returns an integer.- The integer represents the index of the match.
- If no match exists,
-1is returned.
Example 10: Searching for an Entire Word #
main.py
sentence = "Python is easy"
print(sentence.find("easy"))
Output #
10
Explanation #
find()works with complete substrings."easy"begins at index10.- The index is returned.
Common Mistakes #
1. Assuming find() Raises an Error #
Incorrect
text = "Python"
print(text.find("Java"))
Incorrect Expectation #
ValueError
Actual Output #
-1
Reason
find() returns -1 when the substring is not found.
2. Assuming index() Returns -1 #
Incorrect
text = "Python"
print(text.index("Java"))
Output #
ValueError: substring not found
Reason
Unlike find(), index() raises a ValueError if the substring does not exist.
3. Confusing find() with rfind() #
Incorrect
word = "banana"
print(word.find("a"))
Incorrect Expectation #
5
Actual Output #
1
Reason
find() returns the first occurrence.
Use rfind() to obtain the last occurrence.
4. Assuming the Result Is a Boolean #
Incorrect
text = "Python"
result = text.find("P")
print(type(result))
Incorrect Expectation #
<class 'bool'>
Actual Output #
<class 'int'>
Reason
Searching methods return integer indices, not Boolean values.
Best Practices #
- Use
find()when the substring may or may not exist. - Use
index()only when you are certain the substring is present. - Use
rfind()andrindex()when searching from the end of the string. - Check whether
find()returns-1before using the index. - Use descriptive variable names when storing search results.
Key Points to Remember #
find()returns the index of the first occurrence or-1.rfind()returns the index of the last occurrence or-1.index()returns the first occurrence or raisesValueError.rindex()returns the last occurrence or raisesValueError.- These methods return values of type
int. - Searching is case-sensitive.
- These methods do not modify the original string.