This error occurs if you try to call the
split() method on an integer. The
split() method belongs to the string class and splits a string using a delimiter returning a list of strings.
You can solve this error by checking the type of the object before calling the
split() method to ensure that the object is a string.
Table of contents
AttributeError: ‘int’ object has no attribute ‘split’
AttributeError occurs in a Python program when we try to access an attribute (method or property) that does not exist for a particular object.
split() is a string method, which splits a string into a list of strings using a separating character. We pass a separating character to the
split() method when we call it.
Example: Splitting an Integer
Let’s look at an example of an integer which we want to split into three numbers. We will attempt to call the
split() method on the integer:
# Define integer my_int = 246 # Call split() method split_numbers = my_int.split()
Let’s run the code to see what happens:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Input In , in <cell line: 5>() 1 # Define integer 3 my_int = 246 ----> 5 split_numbers = my_int.split() AttributeError: 'int' object has no attribute 'split'
The error occurs because the
split() method belongs to the string class and
my_int is an object of the integer class. We can check what attributes an object has by using the
dir() function, for example:
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
dir() function returns a list of all the attributes that an object has. We can use the
in operator to search for a specific attribute instead of looking by eye.
If the in operator returns
False then the attribute does not exist for that object. Let’s see if split is in the list:
print('split' in dir(my_int))
The membership operation returns
False, verifying that split is not an integer attribute.
Solution: Convert Int to String using str
We can solve this error by converting the integer to a string using the
str() function. Then we can call the
split() method on the newly converted string. Let’s look at the revised code:
# Define integer my_int = 246 my_int = str(my_int) result = my_int.split() print(result)
Let’s run the code to see the result:
split() method returns a list containing the string
'246'. The default separator for the
split() method is whitespace. There is no whitespace in the string. Therefore, the string is left intact. We pass an empty separator to the
If we want to split a string into characters, we can use the built-in
list() function as follows:
split_numbers = list(my_int) print(split_numbers)
['2', '4', '6']
Then if we’re going to convert the characters into integers, we can use a list comprehension with the built-in
int() function as follows:
split_numbers = [int(ch) for ch in split_numbers] print(split_numbers)
[2, 4, 6]
We successfully obtained a list containing the three numbers that made up the initial integer.
Congratulations on reading to the end of this tutorial!
For further reading on 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!
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!