TypeError:字符串索引在 Python 中必须是整数

TypeError: 字符串索引在 Python 中必须是整数

TypeError: string indices must be integers in Python

当我们使用非整数值访问索引处的字符串时,会出现 Python“TypeError: string indices must be integers”。要解决该错误,请确保在访问特定索引处的字符串时使用整数(例如)my_str[2]或切片(例如)。my_str[0:3]

typeerror 字符串索引必须是整数

下面是错误如何发生的示例。

主程序
my_str = 'hello' # 👇️ this is also a string my_index = '1' # ⛔️ TypeError: string indices must be integers result = my_str[my_index]

我们尝试使用字符串索引,但这是不允许的。

如果您有一个包含在字符串中的整数,请使用int()该类对其进行转换。

主程序
my_str = 'hello' my_index = '1' # ✅ convert str to int result = my_str[int(my_index)] print(result) # 👉️ 'e'
我们必须使用整数(例如my_str[2])或切片(例如)作为字符串索引。 my_str[0:2]

如果打印在方括号之间传递的值的类型,则它不会是整数。

主程序
example = '1' print(type(example)) # 👉️ <class 'str'>

如果您需要获取字符串的一部分,请使用冒号分隔开始和结束索引。

主程序
my_str = 'hello world' # 👇️ from index 0 (inclusive) to 5 (exclusive) print(my_str[0:5]) # 👉️ 'hello' # 👇️ from index 6 (inclusive) to end print(my_str[6:]) # 👉️ 'world'

第一个示例展示了如何从字符串中获取前 5 个字符,第二个示例展示了如何从索引 6 处的字符开始。

如果您需要迭代具有索引的字符串,请使用该enumerate()
函数。

主程序
my_str = 'hello' for idx, char in enumerate(my_str): print(idx, char) # 👉️ 0 h, 1 e, 2 l, 3 l, 4 o

idx变量存储当前迭代的索引,变量char
存储相应的字符。

如果您打算声明一个存储键值对的变量,请改用字典。

主程序
my_dict = {'name': 'Alice', 'age': 30} print(my_dict['name']) # 👉️ 'Alice' print(my_dict['age']) # 👉️ 30

如果您需要遍历字典,请使用该items()方法。

主程序
my_dict = {'name': 'Alice', 'age': 30} for key, value in my_dict.items(): print(key, value) # 👉️ name Alice, age 30

The dict.items
method returns a new view of the dictionary’s items ((key, value) pairs).

If you got the error when working with a JSON string, make sure to parse the
JSON into a native Python object before accessing specific items.

main.py
import json my_json = json.dumps( ['apple', 'banana', 'kiwi'] ) print(type(my_json)) # 👉️ <class 'str'> # ✅ convert to native Python object my_list = json.loads(my_json) print(my_list[0]) # 👉️ 'apple' print(my_list[1]) # 👉️ 'banana' print(type(my_list)) # 👉️ <class 'list'>

The json.loads method
parses a JSON string into a native Python object.

Conversely, the
json.dumps method
converts a Python object to a JSON formatted string.

You can use the enumerate() function if you need to access the index while
iterating over a list.

main.py
my_list = ['a', 'b', 'c'] for idx, elem in enumerate(my_list): print(idx, elem) # 👉️ 0 a, 1 b, 2 c
The error “string indices must be integers” occurs when the type of the value between the square brackets is not an integer, nor is it a slice.

If you aren’t sure what type of object a variable stores, use the type()
class.

main.py
my_str = 'hello' print(type(my_str)) # 👉️ <class 'str'> print(isinstance(my_str, str)) # 👉️ True my_dict = {'name': 'Alice', 'age': 30} print(type(my_dict)) # 👉️ <class 'dict'> print(isinstance(my_dict, dict)) # 👉️ True

类型类返回对象的类型

如果传入的对象是传入类的实例或子类,则isinstance
函数返回。
True

结论

当我们使用非整数值访问索引处的字符串时,会出现 Python“TypeError: string indices must be integers”。要解决该错误,请确保在访问特定索引处的字符串时使用整数(例如)my_str[2]或切片(例如)。my_str[0:3]