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()
, applystrip()
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:
- How to Solve Python AttributeError: ‘int’ object has no attribute ‘sort’
- How to Solve Python AttributeError: ‘int’ object has no attribute ‘randint’
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!
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!