Question

Je suis en train de lire les données de Google Fusion API Tables en Python en utilisant csv bibliothèque. Il semble que l'interrogation des API retourne les données CSV, mais quand je tente de l'utiliser avec csv.reader , il semble mutiler les données et le diviser sur tous les personnages plutôt que sur les virgules et les nouvelles lignes . Est-ce que je manque une étape? Voici un exemple que j'ai fait pour illustrer, à l'aide d'une table publique:

#!/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

En fin de compte j'utiliser le csv.DictReader classe, mais la base lecteur montre la question aussi bien

Était-ce utile?

La solution

csv.reader() prend dans un fichier comme objet.

Modifier

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

à

reader = csv.reader(serv_resp)

Sinon, vous pouvez faire:

reader = csv.DictReader(serv_resp)

Autres conseils

Il est pas le module CSV qui est à l'origine du problème. Jetez un oeil à la sortie de serv_resp.read(). Essayez d'utiliser à la place serv_resp.readlines().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top