How to Solve Python AttributeError: ‘int’ object has no attribute ‘strip’

by | Programming, Python, Tips

Introduction

When programming in Python, especially when working with user input or reading data from external sources, you might encounter the following error:

AttributeError: 'int' object has no attribute 'strip'

This error occurs when you mistakenly try to use the strip() method, which is available for strings, on an integer object. The strip() method is used to remove leading and trailing whitespace from a string, but integers do not have this method, leading to the AttributeError.

Example: Using input()

A common situation in which this error occurs is when working with the input() function. In Python, input() always returns data as a string, even if the input looks like an integer. However, if you convert this input to an integer and later try to apply the strip() method to it, you’ll run into this error. Let’s go through an example:

user_input = input("Enter a number: ")
user_input = int(user_input)  # Converting input to an integer
cleaned_input = user_input.strip()  # AttributeError: 'int' object has no attribute 'strip'

In this case, after converting user_input to an integer using int(), the variable no longer supports string methods like strip(). This causes the AttributeError.

Solution

To avoid this error, apply the strip() method before converting the input to an integer. Here’s the corrected code:

user_input = input("Enter a number: ")
cleaned_input = user_input.strip()  # First, strip the input to remove any spaces
cleaned_input = int(cleaned_input)  # Then, convert the cleaned string to an integer
print(cleaned_input)

In this updated version, we apply strip() to the input while it’s still a string and then convert the stripped value to an integer. This avoids the AttributeError while cleaning up any unwanted spaces from the input.

Example: Handling Mixed Data

This error is also common when processing a list with mixed data types, such as integers and strings. For example, if you have a list containing both integers and strings, and you try to apply the strip() method to every item, an AttributeError will occur:

data = [123, '  456 ', ' hello ', 789]
for item in data:
    cleaned_item = item.strip()  # AttributeError: 'int' object has no attribute 'strip'

In this example, the loop tries to apply strip() to both strings and integers, but strip() only works on strings, leading to an error when encountering an integer like 123 or 789.

Solution

To handle mixed data types, you can use Python’s isinstance() function to apply the strip() method only to strings, and leave the integers unchanged:

data = [123, '  456 ', ' hello ', 789]
for item in data:
    if isinstance(item, str):
        cleaned_item = item.strip()
    else:
        cleaned_item = item  # Leave integers unchanged
    print(cleaned_item)

Output:

123
456
hello
789

In this solution, strip() is applied only to strings, and the integers are passed through without modification, preventing the AttributeError.

Summary

  • The strip() method is for strings, not integers.
  • When using input(), apply strip() before converting the input to an integer.
  • Use isinstance() to check the type of data when working with mixed inputs to prevent applying string methods to non-string objects.

Congratulations on reading to the end of this tutorial!

For further reading on 'int' AttributeErrors, go to the article:

To learn more about Python for data science and machine learning, go to the online courses page on Python for the most comprehensive courses available.

Have fun and happy researching!

Profile Picture
Research Scientist at Moogsoft | + posts

Suf is a research scientist at Moogsoft, specializing in Natural Language Processing and Complex Networks. Previously he was a Postdoctoral Research Fellow in Data Science working on adaptations of cutting-edge physics analysis techniques to data-intensive problems in industry. In another life, he was an experimental particle physicist working on the ATLAS Experiment of the Large Hadron Collider. His passion is to share his experience as an academic moving into industry while continuing to pursue research. Find out more about the creator of the Research Scientist Pod here and sign up to the mailing list here!