Bird
Raised Fist0
Data Analysis Pythondata~20 mins

String cleaning (strip, lower, replace) in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
String Cleaning Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this string cleaning code?
Consider the following Python code that cleans a string by stripping spaces, converting to lowercase, and replacing characters. What is the output?
Data Analysis Python
text = '  Hello World!  '
cleaned = text.strip().lower().replace('o', '0')
print(cleaned)
A'hell0 w0rld!'
B' hello world! '
C'Hello World!'
D'hello world!'
Attempts:
2 left
💡 Hint
Remember that strip() removes spaces only at the start and end, lower() changes all letters to lowercase, and replace() swaps specified characters.
❓ data_output
intermediate
2:00remaining
How many unique cleaned strings are in this list?
Given a list of strings, we clean each by stripping spaces and converting to lowercase. How many unique cleaned strings remain?
Data Analysis Python
texts = ['  Apple', 'apple ', 'APPLE', 'Banana', ' banana ', 'BANANA  ']
cleaned_texts = [t.strip().lower() for t in texts]
unique_count = len(set(cleaned_texts))
print(unique_count)
A3
B2
C6
D1
Attempts:
2 left
💡 Hint
Think about how strip() and lower() normalize the strings so that different cases and spaces become the same.
🔧 Debug
advanced
2:00remaining
What error does this string cleaning code raise?
This code tries to clean a list of strings but raises an error. What is the error?
Data Analysis Python
texts = ['Data ', None, ' Science']
cleaned = [t.strip().lower() for t in texts]
print(cleaned)
AAttributeError: 'NoneType' object has no attribute 'strip'
BTypeError: 'list' object is not callable
CIndexError: list index out of range
DValueError: invalid literal for int() with base 10
Attempts:
2 left
💡 Hint
Check what happens when the code tries to call strip() on None.
🚀 Application
advanced
2:00remaining
Which option produces the cleaned DataFrame with replaced characters?
You have a DataFrame with a column 'Name' containing messy strings. You want to strip spaces, convert to lowercase, and replace 'a' with '@'. Which code produces the correct cleaned DataFrame?
Data Analysis Python
import pandas as pd
df = pd.DataFrame({'Name': [' Anna ', 'Mark', '  Sara', 'paul ']})
Adf['Cleaned'] = df['Name'].str.strip().lower().replace('a', '@')
Bdf['Cleaned'] = df['Name'].strip().lower().replace('a', '@')
Cdf['Cleaned'] = df['Name'].apply(lambda x: x.strip().lower().replace('a', '@'))
Ddf['Cleaned'] = df['Name'].str.strip().str.lower().str.replace('a', '@')
Attempts:
2 left
💡 Hint
Remember to use pandas string methods with .str for vectorized operations.
🧠 Conceptual
expert
2:00remaining
Why is chaining string methods with .str important in pandas?
In pandas, why do we use .str before string methods like strip(), lower(), and replace() when cleaning a Series of strings?
ABecause .str is required to convert strings to uppercase only.
BBecause .str converts the Series into a list of strings before applying methods.
CBecause .str allows vectorized string operations on each element of the Series efficiently.
DBecause .str automatically removes missing values before applying string methods.
Attempts:
2 left
💡 Hint
Think about how pandas handles operations on columns with many values.

Practice

(1/5)
1. What does the strip() method do to a string in Python?
easy
A. Replaces parts of the string with new text
B. Removes spaces from the start and end of the string
C. Converts all characters to lowercase
D. Splits the string into a list of words

Solution

  1. Step 1: Understand the purpose of strip()

    The strip() method removes whitespace characters from the beginning and end of a string.
  2. Step 2: Compare with other methods

    lower() changes case, replace() changes parts of the string, and splitting creates lists, so they do not match strip().
  3. Final Answer:

    Removes spaces from the start and end of the string -> Option B
  4. Quick Check:

    strip() = remove spaces [OK]
Hint: strip() cleans edges of spaces fast [OK]
Common Mistakes:
  • Thinking strip() changes case
  • Confusing strip() with replace()
  • Assuming strip() splits strings
2. Which of the following is the correct syntax to replace all occurrences of 'cat' with 'dog' in the string text?
easy
A. text.lower('cat', 'dog')
B. text.replace('dog', 'cat')
C. text.strip('cat', 'dog')
D. text.replace('cat', 'dog')

Solution

  1. Step 1: Identify the correct method for replacement

    The replace() method is used to change parts of a string by specifying the old and new substrings.
  2. Step 2: Check the syntax

    The syntax is string.replace(old, new). So, to replace 'cat' with 'dog', it is text.replace('cat', 'dog').
  3. Final Answer:

    text.replace('cat', 'dog') -> Option D
  4. Quick Check:

    replace(old, new) = correct syntax [OK]
Hint: replace(old, new) swaps text parts [OK]
Common Mistakes:
  • Swapping old and new strings
  • Using strip() or lower() instead of replace()
  • Wrong method call syntax
3. What will be the output of the following code?
text = '  Hello World  '
cleaned = text.strip().lower().replace('world', 'there')
print(cleaned)
medium
A. 'hello there'
B. 'hello world'
C. ' hello there '
D. 'Hello There'

Solution

  1. Step 1: Apply strip() to remove spaces

    The original string has spaces at start and end. strip() removes them, so string becomes 'Hello World'.
  2. Step 2: Apply lower() to convert to lowercase

    Converts 'Hello World' to 'hello world'.
  3. Step 3: Apply replace() to change 'world' to 'there'

    Replaces 'world' with 'there', resulting in 'hello there'.
  4. Final Answer:

    'hello there' -> Option A
  5. Quick Check:

    strip + lower + replace = 'hello there' [OK]
Hint: Chain strip, lower, replace for clean text [OK]
Common Mistakes:
  • Forgetting strip() removes spaces
  • Not converting to lowercase before replace
  • Replacing with wrong case
4. The following code is intended to clean a string by removing spaces and converting to lowercase, but it causes an error. What is the problem?
text = '  Data Science  '
cleaned = text.strip.lower()
print(cleaned)
medium
A. replace() method is missing
B. lower() should be called before strip()
C. strip() is missing parentheses
D. print() is used incorrectly

Solution

  1. Step 1: Identify method call syntax

    Methods like strip() require parentheses to be called. Here, strip is used without parentheses, so it is a method object, not called.
  2. Step 2: Understand the error

    Trying to call lower() on a method object causes an error because strip was not executed.
  3. Final Answer:

    strip() is missing parentheses -> Option C
  4. Quick Check:

    Method calls need () [OK]
Hint: Always add () to call methods [OK]
Common Mistakes:
  • Forgetting parentheses on methods
  • Thinking order of strip and lower causes error
  • Assuming replace() is required
5. You have a list of product codes with inconsistent formatting:
codes = ['  AB123 ', 'cd456', ' EF789', 'GH 012 ']

Which code snippet correctly cleans all codes by removing leading and trailing spaces and converting to lowercase?
hard
A. cleaned = [code.strip().lower() for code in codes]
B. cleaned = [code.lower() for code in codes]
C. cleaned = [code.replace(' ', '').lower() for code in codes]
D. cleaned = [code.strip().replace(' ', '').lower() for code in codes]

Solution

  1. Step 1: Understand the goal

    We want to remove leading and trailing whitespace from each code and convert all letters to lowercase, preserving internal spaces.
  2. Step 2: Analyze each option

    cleaned = [code.strip().lower() for code in codes] uses strip() to remove leading/trailing whitespace then lower() to convert case. Correct (e.g., 'GH 012 ' -> 'gh 012').
    cleaned = [code.lower() for code in codes] only converts to lowercase, leaves leading/trailing spaces. Incorrect.
    cleaned = [code.replace(' ', '').lower() for code in codes] removes all spaces including internal ('GH 012 ' -> 'gh012'). Incorrect.
    cleaned = [code.strip().replace(' ', '').lower() for code in codes] replace() removes internal spaces after strip(). Incorrect.
  3. Final Answer:

    cleaned = [code.strip().lower() for code in codes] -> Option A
  4. Quick Check:

    strip then lower cleans codes [OK]
Hint: Use strip() then lower() in list comprehension [OK]
Common Mistakes:
  • Forgetting strip() and only using lower() leaves spaces
  • Using replace(' ', '') removes internal spaces
  • Redundant replace after strip removes internal spaces
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard