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

调用breachdirectory API给data变量赋值时报错string indices must be integers

问题修复方案

错误原因

你代码中的核心问题是对JSON解析结果做了多余的字符串转换:

  • 执行json.loads(response.text)后,返回结果已经是Python原生的字典/列表类型,可以直接用键名/下标访问数据
  • 你额外用str()包裹了解析结果,把结构化的字典/列表强行转成了普通字符串,字符串只能用整数下标访问单个字符,后续如果用['xxx']这样的键名访问自然会抛出string indices must be integers报错。
    另外你代码中用input作为变量名,会覆盖Python内置的input()函数,属于不规范写法也建议修改。

修正后代码

import requests
import json

# 替换变量名,避免覆盖内置函数
user_input = input("put you data here: ")
url = "https://breachdirectory.p.rapidapi.com/"

querystring = {"func":"auto","term":user_input}

headers = {
    'x-rapidapi-host': "breachdirectory.p.rapidapi.com",
    'x-rapidapi-key': "cdc2ac9cf2msh13a3dv713de3c61p1185f5jsncd225a72c5e1"
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)

# 去掉多余的str()转换,直接保留结构化数据
data = json.loads(response.text)

print('this is data value', data)
# 现在可正常用键名访问数据,例如 data['result']

注意事项

如果需要把data转成字符串做输出、存储等操作,不要在赋值给data的时候转换,应该在需要字符串格式的场景临时转换,避免破坏结构化数据的可访问性。

内容的提问来源于stack exchange,提问作者Luis Pereira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:54:05