【发布时间】:2019-05-16 05:40:22
【问题描述】:
我使用以下代码流式传输推文
class CustomStreamListener(tweepy.StreamListener):
def on_data(self, data):
try:
with open('brasil.json', 'a') as f:
f.write(data)
return True
except BaseException as e:
print("Error on_data: %s" % str(e))
return True
现在我有一个 json 文件 (brasil.json)。我想在python上打开它来做情绪分析,但我找不到办法。我设法用这个打开了第一条推文:
with open('brasil.json') as f:
for line in f:
tweets.append(json.loads(line))
但它不会读取所有其他推文。有什么想法吗?
【问题讨论】:
-
您的代码在我测试时有效。您最终的
tweets列表的长度是多少?我运行了您的CustomStreamListener大约一分钟,得到了 1,813 条推文,然后运行您的代码来读取保存的json和tweets列表长度为 1,813。所以,我不能复制只阅读一条推文,它会阅读所有推文。再次检查tweets列表的长度? -
我还有大约 2000 条推文(如果我用 excel 打开它)。但是在 python 中我得到这个错误: json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 1)
-
似乎缺少数据(“预期值”)或写入的数据不一致。当您在 Excel 中加载文件时,
"line 2 column 1 (char 1)"看起来像什么? (第 2 行,第 1 列) -
当我在 excel 中打开时,如果行,我的所有推文都是奇数。偶数为空
-
好的,有 2 个简单的修复方法:您可以 1) 只读取奇数行 (
for n, line in enumerate(f):),或 2) 使用try / except和except json.decoder.JSONDecodeError: pass。尝试您喜欢的任何一个,看看它是否有效。或者,如果您愿意,我可以将它们放在答案中,因为在 cmets 中格式化代码很困难
标签: python json twitter tweepy