【问题标题】:how to read in a JSON file as separate strings inside a list rather than as one big list如何将 JSON 文件作为列表中的单独字符串读取,而不是作为一个大列表读取
【发布时间】:2016-08-07 00:09:07
【问题描述】:

我正在尝试读取一个看起来像这样的 JSON 文件。它们是推文的时间戳。当我用我的代码读入文件时,它以一个大字符串的形式出现。有没有办法让他们分开。当我使用 str.split() 时,它会拆分所有内容。有没有我可以加载或取出它以使这个更容易

"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)

这就是我目前正在尝试的方法

with open('dates.json', 'rb') as f:
    data = f.readlines()

我希望它们按日期分隔,以便我可以将它们转换为时间序列图

编辑/更新:现在我有了这个,但是流只是不断地收集推文而没有停止。如何让它停止收集推文并将 JSON 数据转储到文件中。手动还是自动

q = 'Trump'

twitter_stream = twitter.TwitterStream(auth=twitter_api.auth)

stream = twitter_stream.statuses.filter(track=q)



dates = [tweet['created_at'] for tweet in stream]
with open('dates.json', 'a') as outfile:
     json.dump(dates, outfile, indent=4)

【问题讨论】:

    标签: python json twitter


    【解决方案1】:

    收集推文日期到列表中,然后转储一次

    dates = [tweet['created_at'] for tweet in stream]
    with open('dates.json', 'a') as outfile:
         json.dump(dates, outfile, indent=4)
    

    有了这个,我如何让它停止流式传输并转储到文件中。之前因为它正在逐个推文转储推文,所以我只会重新启动外壳。

    我认为您应该将理解扩展为常规循环并将其放入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)
    

    【讨论】:

    • 有了这个,我如何让它停止流式传输并转储到文件中。之前因为它正在逐个推文转储推文,所以我只会重新启动外壳。
    • @Mark 好的,请查看更新后的答案。希望这会有所帮助。
    • 抱歉没有看到你更新的答案,以为你想让我更新我的哈哈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2017-12-31
    • 2017-09-26
    • 2023-03-19
    • 2017-11-20
    相关资源
    最近更新 更多