【问题标题】:Python : Getting a TypeError when working with Tweepy dictionariesPython:使用 Tweepy 字典时出现 TypeError
【发布时间】:2020-12-16 00:17:15
【问题描述】:

我正在尝试在 python 中使用 Tweepy 从人们的推文中捕获媒体网址。

tweet_media = clean_data['entities']['media']['media_url']

tweet_media 应该是来自推文的媒体的直接 url,但我不断收到此错误:

Exception has occurred: TypeError
list indices must be integers or slices, not str
    tweet_media = clean_data['entities']['media']['media_url']

Clean_data 是流期间存储所有推文数据的位置。

据我了解,在实体和媒体下,有 media_url,那么这里发生了什么?

提前感谢您的帮助。

【问题讨论】:

  • 在不知道clean_data 的情况下,从错误来看,它在某些时候看起来不再是字典而是列表。你试过一步一步看吗? IE。先看clean_data['entities'],如果还是字典看clean_data['entities']['media']等等
  • 哦,抱歉 - clean_data 是所有传入推文数据的存储位置
  • 正如@Stefan 所说,clean_data['entities']clean_data['entities']['media'] 可能是一个列表,而不是字典 - 请打印调试/评估它们。 (我们不知道clean_data的内容要回答)
  • @Stefan 我看过我自己的clean_data 以及developer.twitter.com/en/docs/twitter-api/v1/data-dictionary/…'media_url' 应该在那里。也许我需要将其与'media' 分组?
  • @AvivYaniv 我可以打印clean_data 并告诉你我的意思

标签: python api twitter tweepy twitterapi-python


【解决方案1】:

如果你看到你的数据clean_data['entities']['media']是一个列表,那么你需要访问它的第一个元素,然后获取它的media_url

tweet_media = clean_data['entities']['media'][0]['media_url']
print(tweet_media)
>>> 'http://pbs.twimg.com/media/EgaJqy0U8AAlL7B.jpg'

【讨论】:

  • 哦,对了,要获得我想要的网址,我只需添加 [0]?
  • 是的,但这只会获得第一个媒体的 url,如果有更多媒体,您可以使用 for 循环遍历 clean_data['entities']['media'] 并打印每个 url
猜你喜欢
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 2016-12-11
  • 1970-01-01
相关资源
最近更新 更多