String Methods: find() and in Operator
startswith() checks if a string begins with a specific prefix and returns True or False—it does not search for the substring anywhere in the string.
Why File Output Gets Extra Spacing
A line read from a file normally includes its trailing newline character. When that line is passed to print(), the existing newline in the string remains, and print() adds another newline after the string. The output therefore contains two newline characters, which appears as a blank line between displayed file lines.
Checking a Prefix
The startswith() method checks only the beginning of a string. It receives a prefix, such as 'From:', and returns either True or False. It does not search for that text everywhere in the string. A line beginning with 'From:' matches, while a line containing 'From:' later in the text does not match the prefix check.
The condition selects the line because the requested prefix is at position zero, the beginning of the string. A string that merely contains the same characters somewhere else does not satisfy this particular check.
Cleaning the Line Before Display
rstrip() removes trailing whitespace and newline characters from the end of a string. It can remove multiple trailing spaces, tabs, or newlines at once, making it more readable than manually slicing off one character.
After rstrip(), the line no longer carries its trailing newline for print() to display. print() still adds its normal single newline, so the result appears as one clean output line rather than a line followed by a blank line.
Filtering and Formatting Together
Extracting From: Lines
Process file lines and display only lines that begin with 'From:', without double spacing.
Read one line: A for loop receives each file line, and that line includes its trailing newline character.
Clean the line: Call rstrip() first so the line no longer carries trailing whitespace or newline characters into the output.
Check the prefix: Use startswith('From:') to test whether the cleaned line begins with the required prefix.
Display matching lines: Print the line only when the prefix check returns True. Since the trailing newline was removed, print() produces single-spaced output.
The workflow selects only the required prefixed lines and displays them without extra blank lines.
Method Names in This Topic
The supplied material gives the detailed behavior needed for startswith() and rstrip(): startswith() performs a beginning-of-string prefix check, while rstrip() removes trailing whitespace and newline characters. The source pack does not define the behavior or result format of find() or the in operator, so their detailed comparison is outside the factual scope of this article. Do not assume that startswith() is a general search operation merely because the topic names other string-search tools.
Common Filtering Mistakes
Treating startswith() as a search for text anywhere in the string
startswith() checks only the beginning of the string, not a later occurrence.
Fix:
Use startswith() when the target must be the prefix of the line.Printing a file line without removing its trailing newline
The file line already contains a newline, and print() adds another one.
Fix:
Call line.rstrip() before printing.Removing only one final character manually
The line may contain multiple trailing whitespace characters, including spaces, tabs, or newlines.
Fix:
Use rstrip(), which removes trailing whitespace and newlines together.Filtering before considering output cleanup
The prefix check can succeed, but the original newline still causes double spacing when the line is printed.
Fix:
Clean the line with rstrip() first, then perform the prefix check and print the cleaned line.
Practice
Write a loop that processes file lines, removes trailing whitespace and newline characters, and prints only lines beginning with 'Subject:'. Explain why calling rstrip() affects the appearance of the output.
Hints
- Call rstrip() on each line before testing or printing it.
- Use startswith('Subject:') as the condition.
- Print the cleaned line only when the condition is True.
Key Takeaways
- startswith() checks whether a string begins with a specified prefix and returns True or False.
- A file line includes a trailing newline, and print() adds another newline when displaying it.
- rstrip() removes trailing whitespace and newline characters, preventing double-spaced output.
- A practical file-processing pattern is to call rstrip(), test startswith(), and print only matching lines.
- The supplied material does not define find() or the in operator, so their detailed behavior should not be inferred from the startswith() rule.
Key Takeaways
- Use startswith() for prefix filtering, not for finding the same text later in a string.
- Remember that file lines carry their own trailing newline character.
- Use rstrip() before printing to remove trailing whitespace and avoid double spacing.
- Combine rstrip() and startswith() in a loop to extract clean, selected lines from structured text files.