Получение "TypeError: объект JSON должен быть str, байтами или байтовым массивом, а не dict" - PullRequest
1 голос
/ 06 апреля 2019

У меня есть вывод json от Tweepy, который я сейчас пытаюсь проанализировать.Например, некоторые из выходных данных являются хэштегами трендов для конкретной области.Поскольку это большой вывод, я пытаюсь определить, как эффективно проанализировать все хэштеги.В выводе json есть другая информация, такая как userid, countrycode и т. Д. Но меня интересуют только хэштеги, которые перечислены, например, как name: '#gamenight.

# using Tweepy

api.trends_place(2295420)

import json 

# Here is a portion of the Tweepy output I received
trends = [{'trends': [{'name': '#RCBvKKR', 'url': 'http://twitter.com/search?q=%23RCBvKKR', 'promoted_content': None, 'query': '%23RCBvKKR', 'tweet_volume': 101508}, {'name': 'created_at': '2019-04-06T00:07:14Z', 'locations': [{'name': 'Bangalore', 'woeid': 2295420}]}]

hashtags = json.dumps(trends)

# Am trying to end up with a way of just extracting 'name' which I believe is how the hashtags are captured 

print(hashtags['name'])

1 Ответ

0 голосов
/ 06 апреля 2019

Это должно быть hastags["trends"][0]["name"] для получения #RCBvKKR


Хорошо, я исправил это. Во-первых, опубликованный код сбивает с толку. Указанный вами json-код недействителен (скобки отсутствуют, а ключ имени не имеет значения). Во-вторых, с помощью вашей команды json.dumps(trends) вы преобразуете уже допустимый словарь Python в строку, которая является массивом, то есть ошибкой (string indices must be integers)

Фиксированная версия выглядит так:

import json

trends = [{'trends': [{'name': '#RCBvKKR', 'url': 'http://twitter.com/search?q=%23RCBvKKR', 'promoted_content': None, 'query': '%23RCBvKKR', 'tweet_volume': 101508}, {'name':"This was missing", 'created_at': '2019-04-06T00:07:14Z', 'locations': [{'name': 'Bangalore', 'woeid': 2295420}]}]}]


print(trends[0]["trends"][0]["name"])

Теперь вывод #RCBvKKR

Если вы действительно получаете строку json от API, используйте json.parse(response) для преобразования строки в python dict.

...