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 senior advisor in data science with deep expertise in Natural Language Processing, Complex Networks, and Anomaly Detection. Formerly a postdoctoral research fellow, he applied advanced physics techniques to tackle real-world, data-heavy industry challenges. Before that, he was a particle physicist at the ATLAS Experiment of the Large Hadron Collider. Now, he’s focused on bringing more fun and curiosity to the world of science and research online.