You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本调用API获取数据遇TypeError错误求助

问题原因及解决建议

问题原因

你遇到的TypeError: string indices must be integers, not 'str'错误核心原因很明确:

  • response.text返回的是原始字符串格式的响应内容,并非Python可直接用字符串索引访问的字典/列表对象。
  • 本地读取JSON文件的脚本能正常运行,是因为json.load()已经把文件内容解析成了Python的字典/列表对象,而从API获取的内容还停留在字符串阶段,自然无法用字符串键值索引。

解决步骤

方法1:用requests内置的JSON解析方法(推荐)

requests库自带response.json()方法,可直接将合法的JSON响应解析为Python字典/列表,替换你原本使用response.text的代码即可:

import requests

# 发起带身份验证的请求(根据你的实际验证方式调整参数)
response = requests.get("你的API地址", auth=("用户名", "密码"))
# 直接解析响应为Python对象
data = response.json()
# 现在可正常访问JSON结构
computers = data["advanced_computer_search"]["computers"]

方法2:手动用json模块解析字符串

如果一定要保留response.text的使用,需通过json.loads()将字符串转换为Python对象:

import requests
import json

response = requests.get("你的API地址", auth=("用户名", "密码"))
# 将字符串格式的响应解析为Python对象
data = json.loads(response.text)
computers = data["advanced_computer_search"]["computers"]

额外排查要点

  • 先检查响应状态码:用print(response.status_code)确认是否返回200(请求成功)。如果是401、403这类状态码,说明身份验证失败,API可能返回HTML错误页面而非JSON,自然无法解析。
  • 打印response.text查看实际内容:如果返回的不是标准JSON格式(比如包含HTML标签、错误提示文本),需先排查API请求的参数、身份验证是否正确,确保API确实返回合法的JSON数据。

内容的提问来源于stack exchange,提问作者Israel Padilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:55:01