Python报错TypeError:列表索引需为整数/切片而非字符串的求助
解决TypeError: list indices must be integers or slices, not str问题
先看API返回的JSON结构:
{"pages":[{"id":7684904,"school":true,"grade":8}]}
这里pages是列表类型(用方括号[]包裹),里面仅包含一个字典对象。你的错误根源是没有正确处理这个嵌套结构:
之前写法的问题:
- 第一种写法直接对列表
pages使用字符串'grade'索引,列表只能用整数/切片索引,因此触发TypeError。 - 第二种写法试图直接从根节点取
'grade',但根节点只有'pages'字段,会抛出KeyError。 - 第三种写法用索引
[2]访问pages列表,但列表只有1个元素(索引范围是0),会抛出IndexError。
正确写法:
先取pages列表的第一个元素(索引0),再从该字典中提取grade值,最后拼接URL:
import json # 分步解析更清晰 response_data = json.loads(grade.content) grade_value = response_data['pages'][0]['grade'] j = session.get(f'https://interneturok.ru/school/student-journal/school/{grade_value}')
或者简化为一行:
j = session.get(f"https://interneturok.ru/school/student-journal/school/{json.loads(grade.content)['pages'][0]['grade']}")
注意:grade_value是整数类型,用f-string拼接时会自动转为字符串,避免手动拼接时的类型错误。
内容的提问来源于stack exchange,提问作者Mercury
相关产品推荐
相关产品推荐

