¿Formatear los datos devueltos por la API de Twitter utilizando python en un archivo csv?

Saludos compañeros entusiastas! Estoy trabajando en un proyecto y estoy utilizando Python para interactuar con la API de Twitter.

Objetivo: Extraiga la ubicación, el texto del tweet, creado en e ID de usuario de los datos sin procesar que ve devueltos en el código de "pprint.pprint(datares)" en un formato específico en el archivo csv.

Problema: ¿Cómo puedo obtener la información que devuelvo en un archivo csv para que cada fila del archivo se muestre de la siguiente manera?

Fila: texto del tweet, su ubicación, creado en, ID de usuario

El siguiente es mi código y muestra lo que puedo devolver hasta ahora.

import urllib2, json, pprint, codecs, unicodedata

u = urllib2.urlopen('http://search.twitter.com/search.json?geocode=29.762778,-95.383056,25.0mi&page=1&rpp=20')
datares = json.load(u)
##raw data returned
pprint.pprint(datares)

##open csv file
with codecs.open('Geotweets.csv',mode='w', encoding='utf-8',errors='replace') as cache:
##need to save tweets,date,area,id to file
    for tweet in datares['results']:
        print tweet['text']
        archive=tweet['text']
        unicodedata.normalize('NFKD', archive).encode('ascii','ignore')
        cache.write(archive)


for date in datares['results']:
    print date['created_at']
for area in datares['results']:
    print area['location']
for id in datares['results']:
    print id['from_user']

preguntado el 03 de mayo de 12 a las 16:05

1 Respuestas

Si desea crear un archivo CSV, use La csv módulo!

Por ejemplo:

with codecs.open('Geotweets.csv',mode='w', encoding='utf-8',errors='replace') as cache:
    writer = csv.writer(cache)
    for tweet in datares['results']:
        writer.writerow([tweet['text'], tweet['area'], tweet['date'], tweet['id']])

O alternativamente:

with codecs.open('Geotweets.csv',mode='w', encoding='utf-8',errors='replace') as cache:
    writer = csv.DictWriter(cache, ["text", "area", "date", "id"])
    for tweet in datares['results']:
        writer.writerow(tweet)

Obviamente, también podrías usar writerows() para simplificar esto aún más:

with codecs.open('Geotweets.csv',mode='w', encoding='utf-8',errors='replace') as cache:
    writer = csv.DictWriter(cache, ["text", "area", "date", "id"])
    writer.writerows(datares['results'])

contestado el 03 de mayo de 12 a las 16:05

Su conocimiento es MUY apreciado @Lattyware y su primera solución que enumeró resultó ser muy útil y beneficiosa, ¡gracias! - Techsan

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.