【问题标题】:TypeError: list indices must be integers, not str with JSONTypeError:列表索引必须是整数,而不是带有 JSON 的 str
【发布时间】:2013-09-06 00:51:51
【问题描述】:

这是我的代码;

f = open("test.json")
data = json.load(f)
loadmain = data['response']['users']
loadurl = loadmain['url']
print loadurl

这是 JSON 文件

{

  "meta": {
"status": 200,
"msg": "OK"
  },

  "response": {
"total_users": 23,
"users": [
  {
    "name": "test",
    "url": "http://testurl.com",
    "updated": 1378151341
  }
...
..
.

我是 Python 初学者,因此对这种方法的任何反馈表示赞赏,我确信 URL 的解码没有以正确的方式完成。无论如何,我主要关心的是;我想要显示 JSON 中的“url”列表,但我得到“TypeError:列表索引必须是整数,而不是 str”

有什么建议吗?

【问题讨论】:

  • 您的代码示例使用了未定义的变量asd。
  • 检查data和asd的类型,可能是列表而不是字典。
  • 哎呀,asd 应该是loadmain 谢谢指出

标签: python json python-2.7


【解决方案1】:

检索 url 列表的一个选项是使用列表推导:

urls = [ user['url'] for user in loadmain ]

【讨论】:

  • 这个成功了!谢谢!!
【解决方案2】:

我怀疑问题出在loadurl = asd['url']。 (除了未知的asd)

在变量loadmain 中有一个数组列表,因此您需要执行以下操作:

for x in loadmain:
   loadurl = x['url']

【讨论】:

  • 效果很好!但只加载一个(很有趣,JSON 文件的最后一个条目)。我需要一个循环吗?
  • 好吧,您应该将loadurl 设为一个列表并附加到它,否则您只会得到最后一个 URL,但您的想法是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 2021-04-03
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多