Ошибка TypeError: строковые индексы должны быть целыми числами обычно возникает, когда вы пытаетесь получить доступ к значению из итерируемого объекта, используя строковый индекс, а не целочисленный индекс.
- Воспроизведение ошибки
- Сценарий 1. Индекс строки или целочисленный индекс
- Сценарий 2. Индексы строк должны быть целыми числами, а не кортежами
- Сценарий 3. Доступ к значениям с использованием строкового индекса вместо целочисленного индекса
- Как исправить ошибку?
- Способ 1. Строковый индекс или целочисленный индекс
- Способ 2. Индексы строк должны быть целыми числами, а не кортежами
- Способ 3. Доступ к значениям с использованием строкового индекса вместо целочисленного индекса
Воспроизведение ошибки
Сценарий 1. Индекс строки или целочисленный индекс
|
1 2 3 4 5 |
main_string = "metaverse" index = "1" print(main_string[index]) |
Если вы запустите приведенный выше код, вы получите TypeError.
|
1 |
TypeError: string indices must be integers |
Сценарий 2. Индексы строк должны быть целыми числами, а не кортежами
|
1 2 3 |
mystring = "Mahavir Jayanti" print(mystring[0, 5]) |
Выход
|
1 |
TypeError: string indices must be integers |
Сценарий 3. Доступ к значениям с использованием строкового индекса вместо целочисленного индекса
|
1 2 3 4 5 6 7 8 9 |
person = { "Name": "Mahavir", "Phone": "0", "Address": "Swarg Lok" } for k in person: print("Name:" + k["Name"]) print("Phone:" + k["Phone"]) print("Address:" + k["Address"]) |
Выход
|
1 |
TypeError: string indices must be integers |
Как исправить ошибку?
Способ 1. Строковый индекс или целочисленный индекс
Чтобы исправить ошибку TypeError: строковые индексы должны быть целыми числами, убедитесь, что вы «используете целочисленное значение для индекса». Вы можете использовать встроенную функцию int() для преобразования нецелого индекса в целое число.
|
1 2 3 4 5 |
main_string = "metaverse" index = "1" print(main_string[int(index)]) |
Выход
|
1 |
e |
Видите ли, он возвращает второй элемент строки, индекс которого равен 1, поскольку в Python индекс начинается с 0.
Мы исправили ошибку TypeError: строковые индексы должны быть целыми числами, преобразовав индекс в целое число с помощью функции int().
Однако этот подход несовершенен и будет работать только в том случае, если индекс можно успешно преобразовать в целое число.
Если индекс не является допустимым целым числом, вместо этого будет выдана ValueError. Например, если в приведенном выше коде индекс равен «x» вместо «1», это вызовет ошибку ValueError.
Способ 2. Индексы строк должны быть целыми числами, а не кортежами
|
1 2 3 |
main_string = "Mahavir Jayanti" print(main_string[0:7]) |
Выход
|
1 |
Mahavir |
Способ 3. Доступ к значениям с использованием строкового индекса вместо целочисленного индекса
|
1 2 3 4 5 6 7 8 9 |
person = { "Name": "Mahavir", "Phone": "0", "Address": "Swarg Lok" } print("Name:" + person["Name"]) print("Phone:" + person["Phone"]) print("Address:" + person["Address"]) |
Выход
|
1 2 3 |
Name:Mahavir Phone:0 Address:Swarg Lok |
