我正在尝试读取看起来像这样的JSON文件。它们是推文的时间戳。当我用我的代码读入文件时,它是一个大字符串。有没有办法让他们分开。当我使用str.split()时,它会分割所有内容。是否有我可以加载或取出它来制作这个更容易的
if sum(1 for item in somelist if item) != 1:
raise ValueError("or whatever...")
以下是我在
中阅读的内容"Sat Aug 06 23:54:24 +0000 2016""Sat Aug 06 23:54:24 +0000 2016""Sat Aug 06 23:54:24 +0000 2016""Sat Aug 06 23:54:24 +0000 2016"
以下是我目前正试图将其解决的问题
q = 'Trump'
twitter_stream = twitter.TwitterStream(auth=twitter_api.auth)
stream = twitter_stream.statuses.filter(track=q)
for tweet in stream:
print (type(tweet))
tweet = tweet['created_at']
with open('dates.json', 'a') as outfile:
json.dump(tweet, outfile, indent=4)
我希望它们按日期分隔,以便我可以将它们转换为制作时间序列图
编辑/更新:现在我有了这个,但是流不断地收集推文而不停止。如何让它停止收集推文并将JSON数据转储到文件中。手动或自动
with open('dates.json', 'rb') as f:
data = f.readlines()
答案 0 :(得分:1)
将推文日期收集到列表中,然后转储一次:
dates = [tweet['created_at'] for tweet in stream]
with open('dates.json', 'a') as outfile:
json.dump(dates, outfile, indent=4)
有了这个,我如何让它停止流式传输并转储到文件中。之前由于它是通过推文倾销推文,我只是重新启动shell。
我认为您应该将理解扩展到常规循环并将其放入try/finally
:
dates = []
try:
for tweet in stream:
dates.append(tweet['created_at'])
finally:
with open('dates.json', 'a') as outfile:
json.dump(dates, outfile, indent=4)