2016-08-07 27 views
1

Ich versuche, in einer JSON-Datei zu lesen, die so aussieht. Sie sind die Zeitstempel von Tweets. Wenn ich die Datei mit meinem Code einlese, kommt sie als eine einzige große Zeichenfolge. Gibt es eine Möglichkeit, sie zu trennen? Wenn ich str.split() verwende, dann teilt es alles auf. Gibt es eine war, dass ich es in ihm oder nehmen Sie laden aus diesem easiserwie in einer JSON-Datei als separate Strings in einer Liste statt als eine große Liste zu lesen

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

Heres zu machen, wie ich es in

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) 

lese und hier ist, wie ich zur Zeit bin versucht, es zu bekommen out

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

ich möchte sie nach Datum getrennt werden, so dass ich sie verdeckte kann eine Zeitreihe Diagramm machen

EDIT/UPDATE: Jetzt habe ich das, aber der Stream sammelt kontinuierlich Tweets ohne anzuhalten. Wie kann ich damit aufhören, die Tweets zu sammeln und die JSON-Daten in die Datei zu speichern? Whethere manuell oder automatisch

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) 

Antwort

1

Collect tweet in eine Liste von Daten und dann Dump einmal:

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

Damit, wie kann ich es Streaming zu stoppen bekommen und dump in die Datei. Bevor ich Tweet mit Tweet pumpte, würde ich einfach die Shell neu starten.

Ich denke, man sollte das Verständnis zu einer regelmäßigen Schleife erweitern und steckte es in eine 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) 
+0

Damit wie bekomme ich es Streaming und Dump in die Datei zu stoppen. Bevor ich Tweet mit Tweet pumpte, würde ich einfach die Shell neu starten. – Mark

+0

@Mark in Ordnung, bitte sehen Sie die aktualisierte Antwort. Hoffe das hilft. – alecxe

+0

Sorry hat Ihre aktualisierte Antwort nicht angezeigt, dachte, Sie wollten, dass ich meine lol aktualisiert – Mark