【问题标题】:Python - "string indices must be integers" error using json and twitterPython - “字符串索引必须是整数”错误使用 json 和 twitter
【发布时间】:2026-01-03 19:05:01
【问题描述】:

所以我正在处理一项任务,并在尝试解析我返回的 json 文件时不断收到此错误。我将 2 个不同的部分组合在一起,并进行了非常小的修改。我不断收到错误“字符串索引必须是整数”这是我正在使用的代码和 2 张幻灯片。任何帮助将不胜感激!

Slide 1

Slide 2

from twython import Twython

ConsumerKey = "..."
ConsumerSecret = "..."
AccessToken = "..."
AccessTokenSecret = "..."

twitter = Twython(ConsumerKey,
    ConsumerSecret,
    AccessToken,
    AccessTokenSecret)

result = twitter.search(q="drexel")

for tweet in result:
    print(" User: {0} \n Created: {1} \n Text: {2} \n "
        .format(tweet ['user'] ['name'],
            tweet['created_at'],
            tweet ['text']))

【问题讨论】:

  • 也许您得到的 json 格式与演示文稿代码得到的 json 格式不同。如果您在循环内执行print(tweet),您会看到什么?
  • 您希望tweet['user'] 包含一个子字典,但显然它只是一个普通字符串。
  • statuses & search_metadata 从打印中返回。这不是多维数组吗?
  • 完整的回溯可能会有所帮助。
  • 回溯(最近一次调用最后一次):第 20 行,在 .format(tweet ['user'] ['name'], TypeError: string indices must be integers

标签: python json twitter


【解决方案1】:

json 是一个多维数组。在 Kevin 建议使用返回状态和 search_metadata 的 print(tweet) 之后,我意识到了这一点。这是有效的更新代码!

from twython import Twython

ConsumerKey = "...e"
ConsumerSecret = "..."
AccessToken = "..."
AccessTokenSecret = "..."

twitter = Twython(ConsumerKey,
	ConsumerSecret,
	AccessToken,
	AccessTokenSecret)
	
result = twitter.search(q="drexel")

result1 = result['statuses']

for tweet in result1:
	print(" User: {0} \n Created: {1} \n Text: {2} \n "
		.format(tweet ['user'] ['name'],
			tweet['created_at'],
			tweet ['text']))

【讨论】: