Python - повысить JSONDecodeError («Ожидаемое значение», s, err.value) из None - PullRequest
0 голосов
/ 15 марта 2019

Я собирал живые твиты за час до недавнего матча Лиги чемпионов между "Ювентусом" и "Атлетико Мадрид".

#setting tweepy up
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth,wait_on_rate_limit=True)
translator = Translator()


#gathering live tweets with probable hashtags for the fixture for an hour before the game starts
class Listener(StreamListener):

    def on_data(self, status):
        print(status)
        with open('Juve_vs_AthMadrid.json', 'a') as f:
            f.write(status)
        return True
    def on_error(self, status):
        print(status)
        return True

twitter_stream = Stream(auth, Listener())
twitter_stream.filter(track=['#Juve', '#juve', '#JuveAtleti', '#turin',
                             '#AúpaAtleti', '#ForzaJuve', '#AtléticosAroundTheWorld!', '#VamosAtleti',
                             '#AtléticosPorElMundo'])

Затем я приступил к очистке данных.Я создал список с каждым словарём твитов (в виде строки) и попытался преобразовать эти строки в настоящие словари python с помощью функции json.loads

handle = open('Juve_vs_AthMadrid.json', 'r')
file = handle.readlines()
handle.close()
dic_list = []
for dic_str in file:
    dic_list.append(json.loads(dic_str))

Однако я продолжаюполучение повышение JSONDecodeError («Ожидаемое значение», s, err.value) из None ошибка в строке dic_list.append(json.loads(dic_str))

1 Ответ

1 голос
/ 15 марта 2019

Пример чтения файла JSON и сохранения данных в словаре Python:

example.py * * 1004

import json
with open("example.json", "r") as json_data:
  data = json.loads(json_data.read())
  print(type(data))
  print(data)

example.json

{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}

Выход:

<class 'dict'>
{'glossary': {'GlossDiv': {'GlossList': {'GlossEntry': {'SortAs': 'SGML', 'Abbrev': 'ISO 8879:1986', 'ID': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'GlossDef': {'GlossSeeAlso': ['GML', 'XML'], 'para': 'A meta-markup language, used to create markup languages such as DocBook.'}, 'GlossSee': 'markup', 'Acronym': 'SGML'}}, 'title': 'S'}, 'title': 'example glossary'}}

Вывод показывает, что data имеет тип dict.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...