2013-10-01 2 views
1

Я новичок в Python, и я пишу фрагмент кода для сбора твитов от двух соседей, сохраняя их в формате JSON и обрабатывая некоторые данные. Есть ли у вас какое-либо предложение о том, как извлечь дату и время твита, или на ho, как подсчитать количество твитов для соседа? Другими словами, каков наилучший способ изолировать различную переменную .txt с данными JSON во что-то грандиозное?Как сохранить и обработать твиты, сохраненные как JSON в Python

Большое спасибо!

from twitter import * 

import sys 
import os.path 
import simplejson as json 
import tweepy 
import csv 

#log into Twitter 
OAUTH_TOKEN = 'XXX' 
OAUTH_SECRET = 'XXX' 
CONSUMER_KEY = 'XXX' 
CONSUMER_SECRET = 'XXX' 

t = Twitter(auth=OAuth(OAUTH_TOKEN, OAUTH_SECRET, CONSUMER_KEY, CONSUMER_SECRET)) 
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 

#I consider A to be a 2km radius circle 
result_A = t.search.tweets(query="kaffe",geocode="55.662610,12.604074,1.24mi",result_type='recent') 
with open('data_A.txt', 'w') as outfile: 
    json.dump(result_A, outfile) 

#Similarly, B is a 2km radius circle 
result_B = t.search.tweets(query="kaffe",geocode="55.694700,12.548283,1.24mi",result_type='recent') 
with open('data_B.txt', 'w') as outfile: 
    json.dump(result_B, outfile) 
+0

Вам может потребоваться предоставить пример чириканье, чтобы мы могли оценить его формат – Talvalin

+0

Почему CSV? Чтобы вы могли обрабатывать его в Excel? (предполагая, что вы имели в виду CSV, а не CVS, и это была просто опечатка) –

+0

Привет, Talvalin, вот файл_A: https://dl.dropboxusercontent.com/u/2684973/data_A.txt –

ответ

0

Если вам нужны более расширенные функциональные возможности работы с электронными таблицами в Python, вы можете захотеть взглянуть на http://manns.github.io/pyspread/.

Кроме того, SQLite3 встроен в модуль sqlite3: просто создайте БД и SQL в памяти.

Однако, вот несколько примеров о том, как сделать основной материал в чистом Python:

import json 
import urllib 
from datetime import datetime 

data = urllib.urlopen('https://dl.dropboxusercontent.com/u/2684973/data_A.txt').read() 
data = json.loads(data) 

tweets = data['statuses'] 

def parse_created(timestamp): 
    _, m, d, t, _, y = timestamp.split(' ') 
    return datetime.strptime('%s %s %s %s' % (m, d, t, y), '%b %d %H:%M:%S %Y') 

tweets_data = [(x['user']['name'], x['text'], parse_created(x['created_at'])) 
       for x in tweets] 

tweets_data теперь содержит «стол» из этих столбцов, если вам это нужно в таком формате (например, для черчения) ; или:

erik_tweets = [x for x in tweets 
       if x['user']['name'] == 'Erik Allik'] 

или:

erik_tweets_before_today = [ 
    x for x in tweets 
    if x['user']['name'] == 'Erik Allik' 
    and x['created_at'].date() < datetime.date.today() 
] 
+0

Спасибо! Каков наилучший способ преобразования времени в формате, который я могу построить? Теперь, если я печатаю tweets_data [2], я получаю datetime.datetime (2013, 10, 2, 7, 41, 35) –

+0

Это объект 'datetime'; если вы хотите преобразовать его в строку, используйте метод 'strftime': http://docs.python.org/2/library/datetime.html –

+0

Отлично! Последнее: как я могу получить доступ к столбцу времени в tweets_data? Если я напечатаю print tweets_data [:, 2], я получаю «TypeError: индексы списка должны быть целыми, а не кортежем». –

Смежные вопросы