【发布时间】:2016-03-29 15:10:13
【问题描述】:
我在 Windows 上使用 Python 2.7.11 从 API 获取 JSON 数据(波兰华沙的树木数据,但没关系)。我想使用 api 提供的所有数据生成输出 csv 文件,以供进一步分析。我从使用for another project 的脚本开始(在 Stackoverflow 上也进行了讨论,@Martin Taylor 为我更正了)。该脚本不起作用,所以我尝试使用我非常基本的理解对其进行修改,谷歌搜索并应用 pdb 调试器.目前,结果如下所示:
import pdb
import json
import urllib2
import csv
pdb.set_trace()
url = "https://api.um.warszawa.pl/api/action/datastore_search/?resource_id=ed6217dd-c8d0-4f7b-8bed-3b7eb81a95ba"
myfile = 'C:/dane/drzewa.csv'
csv_myfile = csv.writer(open(myfile, 'wb'))
cols = ['numer_adres', 'stan_zdrowia', 'y_wgs84', 'dzielnica', 'adres', 'lokalizacja', 'wiek_w_dni', 'srednica_k', 'pnie_obwod', 'miasto', 'jednostka', 'x_pl2000', 'wysokosc', 'y_pl2000', 'numer_inw', 'x_wgs84', '_id', 'gatunek_1', 'gatunek', 'data_wyk_pom']
csv_myfile.writerow(cols)
def api_iterate(myfile):
while True:
global url
print url
json_page = urllib2.urlopen(url)
data = json.load(json_page)
json_page.close()
for data_object in data ['result']['records']:
csv_myfile.writerow([data_object[col] for col in cols])
try:
url = data['_links']['next']
except KeyError as e:
break
with open(myfile, 'wb'):
api_iterate(myfile)
我是一个非常新的 Python 用户,所以我一直很困惑。现在我明白了,在读取 json 字典中的对象时,我收到一条与“x_wgs84”元素关联的 Keyerror 消息。我想这与在源 url 中这个元素前面有一个 U+FEFF unicode 字符的事实有关。我试图解决这个问题,但我遇到了困难,希望得到帮助。
我怀疑代码可能以其他几种方式损坏 - 正如我所提到的,我是一个非常不熟练的程序员(但)。
【问题讨论】: