用python阅读json twitter流

时间:2018-03-09 19:37:43

标签: python json tweepy

我很擅长使用p​​ython和编码,所以我觉得这个答案是我不了解python如何工作的东西。
我一直在使用Tweepy从python收集数据流来衡量不同事物的情绪。那部分工作正常。当我运行程序时,我将数据写入txt文件,然后尝试使用该文件中的数据来查看常见单词或位置等内容。但是在阅读数据时遇到了问题。我一直在网上搜索,发现人们阅读数据的方式有很多,但由于我一般不熟悉json文件,所以我不明白为什么这些方法会起作用。
我似乎遇到的主要错误与此类似:

  

JSONDecodeError:期望值:第1行第1列(char 0)。

根据我的理解,这意味着数据无法正确读取,因为无法读取为json文件。但我也遇到过这样的错误:

  

JSONDecodeError:期望值:第4行第1列(char 0)。

我不明白为什么会改变。我尝试将文件作为原始txt文件读取,然后再次将其另存为json文件。尝试将其作为json文件时收到的第一个错误,第二个错误来自txt文件。

我已经阅读了许多讨论类似问题的不同主题,但他们一直在给我这些类型的错误。举个例子,这是我最近的错误代码:

import json
source = open("../twitterdata24.json")
json_data = json.load(source)

我的其他尝试之一:

import json
tweets = []
for line in open("fileinfo"):
    tweets.append(json.load(line))

另一个兴趣点,我正在处理的数据包含许多单独的推文,从我读过的内容来看,我认为每个推文都是一个新词典存在问题,所以我试图制作整个数据文件使用[]的列表,但只是将错误向下移动了一行。

因此,如果有任何人可以告诉我或指出我这将有助于我理解我应该做什么来阅读这些数据,我真的很感激。 感谢

编辑: 这是一小部分数据样本。整个数据文件有点大,所以这里是文件中的前两个推文 https://drive.google.com/file/d/1l6uiCzBTYf-SqUpCThQ3WDXmslMcUnPA/view?usp=sharing

1 个答案:

答案 0 :(得分:0)

查看您的示例数据,我怀疑问题在于它不是有效的json文档。您实际上拥有以下数据:

{"a": "b"}
{"c": "d"}

{"a": "b"}是有效的json,{"c": "d"}是有效的json,但{"a": "b"}\n{"c": "d"}是无效的json。这解释了为什么`json.load(source)失败。

您第二次尝试就在正确的轨道上:通过逐行读取文件,您可以单独提取有效的json数据对象。但是你的实现有两个问题:

  • line是一个字符串,您无法在字符串上调用json.load。这是json.loads的用途。
  • 您无法将空行转换为json对象。

因此,如果您检查空行并使用loads,则应该可以毫无问题地填写tweets列表。

import json
tweets = []
with open("sampledata.txt") as source:
    for line in source:
        if line.strip():
            tweets.append(json.loads(line))

print("Succesfully loaded {} tweets.".format(len(tweets)))

结果:

Succesfully loaded 2 tweets.