Searching and Measuring
Once you can read pieces of a string, the next step is to ask questions about its contents: "does it contain this?", "where is it?", "how many times?", "does it start/end with�".
Membership
Use in to check if a substring appears anywhere in a string. It returns a Boolean.
123s = "Python programming" print("gram" in s) # True print("Java" not in s) # True
Finding Positions
find(sub)returns the starting index of the first match, or -1 if not found;rfind(sub)searches from the right and returns the last match index (or -1);index(sub)is likefind, but raisesValueErrorif the substring is missing.
12345s = "abracadabra" print(s.find("bra")) # 1 print(s.rfind("bra")) # 8 print(s.find("xyz")) # -1 print(s.index("xyz")) # ValueError
Counting Occurrences
count(sub) returns how many non-overlapping times the substring appears.
123s = "banana" print(s.count("a")) # 3 print(s.count("na")) # 2
Starts and Ends
To check a string's start or end, use startswith or endswith; these are clearer and safer than slicing when you only need a yes/no answer.
123fname = "report_final.pdf" print(fname.startswith("report")) # True print(fname.endswith(".pdf")) # True
Case-insensitive checks (simple and practical)
String methods are case-sensitive. For case-insensitive search, normalize both sides with .lower() (or .upper()).
123msg = "Hello, World!" print("hello" in msg.lower()) # True print(msg.lower().startswith("hello")) # True
We already used len() in the previous chapter to measure length; here we focus on content checks and locations.
1. What will this code output?
2. Which statement does not raise an error when the substring is missing?
3. Given s = "Banana", which expression returns True case-insensitively for checking the prefix "ba"?
Thanks for your feedback!
Ask AI
Ask AI
Ask anything or try one of the suggested questions to begin our chat
Can you explain the difference between find and index methods?
How do I perform a case-insensitive substring search?
What happens if the substring is not found when using rfind?
Awesome!
Completion rate improved to 5
Searching and Measuring
Swipe to show menu
Once you can read pieces of a string, the next step is to ask questions about its contents: "does it contain this?", "where is it?", "how many times?", "does it start/end with�".
Membership
Use in to check if a substring appears anywhere in a string. It returns a Boolean.
123s = "Python programming" print("gram" in s) # True print("Java" not in s) # True
Finding Positions
find(sub)returns the starting index of the first match, or -1 if not found;rfind(sub)searches from the right and returns the last match index (or -1);index(sub)is likefind, but raisesValueErrorif the substring is missing.
12345s = "abracadabra" print(s.find("bra")) # 1 print(s.rfind("bra")) # 8 print(s.find("xyz")) # -1 print(s.index("xyz")) # ValueError
Counting Occurrences
count(sub) returns how many non-overlapping times the substring appears.
123s = "banana" print(s.count("a")) # 3 print(s.count("na")) # 2
Starts and Ends
To check a string's start or end, use startswith or endswith; these are clearer and safer than slicing when you only need a yes/no answer.
123fname = "report_final.pdf" print(fname.startswith("report")) # True print(fname.endswith(".pdf")) # True
Case-insensitive checks (simple and practical)
String methods are case-sensitive. For case-insensitive search, normalize both sides with .lower() (or .upper()).
123msg = "Hello, World!" print("hello" in msg.lower()) # True print(msg.lower().startswith("hello")) # True
We already used len() in the previous chapter to measure length; here we focus on content checks and locations.
1. What will this code output?
2. Which statement does not raise an error when the substring is missing?
3. Given s = "Banana", which expression returns True case-insensitively for checking the prefix "ba"?
Thanks for your feedback!