Domanda

Sto cercando di leggere i dati da Google Fusion Tables API in Python utilizzando il csv biblioteca. Sembra che l'interrogazione dei dati restituisce API CSV, ma quando provo e lo uso con csv.reader , sembra manipolare i dati e di dividerlo in ogni personaggio e non solo sulle virgole e ritorni a capo . Mi sto perdendo un passo? Ecco un esempio che ho fatto per illustrare, utilizzando una tabella pubblica:

#!/usr/bin/python

import csv
import urllib2, urllib

request_url = 'https://www.google.com/fusiontables/api/query' 
query = 'SELECT * FROM 1140242 LIMIT 10'

url = "%s?%s" % (request_url, urllib.urlencode({'sql': query}))
serv_req = urllib2.Request(url=url)
serv_resp = urllib2.urlopen(serv_req)

reader = csv.reader(serv_resp.read())

for row in reader:
    print row #prints out each character of each cell and the column headings

In definitiva sarei usando il csv.DictReader di classe, ma la base di Lettore mostra il problema così

È stato utile?

Soluzione

csv.reader() prende in un file come oggetto.

Cambia

reader = csv.reader(serv_resp.read()) 

a

reader = csv.reader(serv_resp)

In alternativa, si potrebbe fare:

reader = csv.DictReader(serv_resp)

Altri suggerimenti

Non è il modulo CSV che sta causando il problema. Date un'occhiata a l'output di serv_resp.read(). Provate ad usare serv_resp.readlines() invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top