If you get the TypeError: byte indices must be integers or slices, not str, don’t worry. I will provide two solutions that convert the byte object to a string and a list and then perform a slice on two data types. Read the following article.
What causes the TypeError: byte indices must be integers or slices, not str?
TypeError: Python throws this error when you perform an unsupported operation on an object with an invalid data type.
The TypeError: byte indices must be integers or slices, not str happens because you use string as the index to access byte object.
Example:
# 'byte' object byteObj = b'LEARNSHAREIT website' myString = 'visit learnshareit' # Access the index of the 'byte' object with a string print(byteObj[myString])
Output:
Traceback (most recent call last):
File "./prog.py", line 6, in <module>
print(byteObj[myString])
TypeError: byte indices must be integers or slices, not str
How to solve this error?
Convert the ‘byte’ object to string
I convert the ‘byte‘ object to string using the str function and do a slice when the object has a string data type that won’t throw an error.
Example:
- Create a ‘byte’ object.
- Convert the object to string data type using the str() function.
- Perform a slice on the string.
byteObj = b'LEARNSHAREIT website' # Use the str() function to convert byte object to string object byteObj = str(byteObj , 'UTF-8') print('Sliced element:', byteObj[0])
Output:
Sliced element: L
Or do a slice to get multiple elements on the string following the formula:
[start:end]
Parameters:
- start: is the starting position to get the value. If left blank, the default is to get from the beginning of the tuple.
- end: end position. If left blank, all values in the tuple will be taken.
Example:
byteObj = b'LEARNSHAREIT website' # Use the str() function to convert byte object to string object byteObj = str(byteObj , 'UTF-8') print('Sliced string:', byteObj[0:5])
Output:
Sliced string: LEARN
Perform a slice on the list
The two most possible data types for performing slicing are string and list. In this method number two, I will convert the ‘byte’ object to string type, convert it to list type, and then perform a slice on the list.
Example:
- Create a ‘byte’ object.
- Convert the object to string data type using the str() function.
- Then convert the string data type to a list using the list function.
- Perform a slice on the list.
byteObj = b'LEARNSHAREIT website' # Use the str() function to convert byte object to string object. byteObj = str(byteObj) # Perform a slice on the list. myList = list(byteObj) print('Sliced list:', myList[0])
Output:
Sliced string: b
Or do a slice to get multiple elements on the list
Example:
byteObj = b'LEARNSHAREIT website' # Use the str() function to convert byte object to a string object byteObj = str(byteObj) # Perform a slice on the list myList = list(byteObj) print('Sliced list:', myList[0:5])
Output:
Sliced list: ['b', "'", 'L', 'E', 'A']
Summary
Hopefully, through the article, you have an idea to solve the TypeError: byte indices must be integers or slices, not str. If you have any questions or other ways, don’t hesitate to comment below. Thank you for reading.
Maybe you are interested:
- TypeError: __init__() should return None, not ‘X’ in Python
- TypeError: ‘bool’ object is not subscriptable in Python
- TypeError: list indices must be integers or slices, not dict

My name is Jason Wilson, you can call me Jason. My major is information technology, and I am proficient in C++, Python, and Java. I hope my writings are useful to you while you study programming languages.
Name of the university: HHAU
Major: IT
Programming Languages: C++, Python, Java