If you have encountered the Typeerror: string indices must be integers
error in Python, it typically means you tried to access a character in a string using a non-integer index. In this article, we’ll look at why this error occurs and how you can quickly fix it.
Why Does the Error Occur?
In Python, strings are sequences of characters, where each character has an index starting from 0
. This means the first character is at index 0
, the second at 1
, and so on. Like tuples and lists, strings are also iterable. You can access their values using character indices.
However, if you accidentally use a non-integer or make a coding mistake, Python won’t know what to do. It will then throw a TypeError: string indices must be integers
error.

TypeError: string indices must be integers – Causes and Solutions
1. When Using a String as an Index
Strings require integer indices. If you use a string as an index, Python will raise a TypeError: string indices must be integers
error.
Example Error
Here, we are trying to access the character 'S'
using the string "S"
. But Python expects an integer value to locate a character in the string, not another string.
string_value = "Syntax Scenarios" print(string_value["S"]) # Output: TypeError: string indices must be integers
Solution Code
To fix this, replace the string index with an integer value.
string_value = "Syntax Scenarios" print(string_value[0])
Output
S
2. When Using a Float as an Index
Another common cause of the TypeError
is using a float value to index a string. While floats are valid for mathematical operations, they cannot be used for string indexing.
Example Error
In this example, we assign a float value 2.5
to the variable index
. Since Python requires an integer for indexing, using 2.5
results in a TypeError
.
string_value = "Syntax Scenarios" location = 2.5 print(string_value[location]) # Output: TypeError: string indices must be integers
Solution Code
To fix this, convert the float to an integer using the int()
function, which truncates the decimal part.
string_value = "Syntax Scenarios" index = 2.5 print(string_value[int(index)])
Output
n
3. When Using Quotation Marks Around an Integer Index
In Python, everything inside quotation marks is treated as a string, even if it looks like a number. For example, 34
is an integer, but "34"
is a string. If you mistakenly place an integer inside quotation marks, Python will interpret it as a string and attempt to use it as a string index.
Example Error
Here, we wrap the index 3
in quotes "3"
, making it a string. Python then raises the TypeError: string indices must be integers
error as it expected an integer for indexing.
string_value = "Syntax Scenarios" print(string_value["3"]) # Output: TypeError: string indices must be integers
Solution Code
To fix this, remove the quotation marks and use the integer value directly.
string_value = "Syntax Scenarios" print(string_value[3])
Output
t
Key Takeaways
- Strings require integer indices. If you use a string as an index, Python will throw a
TypeError: string indices must be integers
error. Always use an integer to access a character in a string. - Floats cannot be used for indexing. If you mistakenly use a float as an index, Python will raise an error. Convert the float to an integer using
int()
before indexing. - Numbers inside quotes are treated as strings. If you put an index inside quotation marks, Python will interpret it as a string, leading to a
TypeError
. Always use numbers without quotes for indexing.
For more Python tutorials, check out the Python Series on Syntax Scenarios and level up your coding skills!