gpt4 book ai didi

python - 如何从世界银行的数据集中下载 CSV 文件

转载 作者:行者123 更新时间:2023-11-28 21:51:53 27 4
gpt4 key购买 nike

我想自动从世界银行的 dataset 下载 CSV 文件.

我的问题是对应于特定数据集的 URL 不会直接指向所需的 CSV 文件,而是对世界银行 API 的查询。例如,这是获取人均 GDP 数据的 URL:http://api.worldbank.org/v2/en/indicator/ny.gdp.pcap.cd?downloadformat=csv .

如果您将此 URL 粘贴到浏览器中,它会自动开始下载相应的文件。因此,我通常用于在 Python 中收集和保存 CSV 文件的代码在当前情况下不起作用:

baseUrl = "http://api.worldbank.org/v2/en/indicator/ny.gdp.pcap.cd?downloadformat=csv"
remoteCSV = urllib2.urlopen("%s" %(baseUrl))
myData = csv.reader(remoteCSV)

我应该如何修改我的代码以便将来自查询的文件下载到 API?

最佳答案

这将下载 zip,打开它并为您提供一个包含您想要的任何文件的 csv 对象。

import urllib2
import StringIO
from zipfile import ZipFile
import csv

baseUrl = "http://api.worldbank.org/v2/en/indicator/ny.gdp.pcap.cd?downloadformat=csv"
remoteCSV = urllib2.urlopen(baseUrl)

sio = StringIO.StringIO()
sio.write(remoteCSV.read())
# We create a StringIO object so that we can work on the results of the request (a string) as though it is a file.

z = ZipFile(sio, 'r')
# We now create a ZipFile object pointed to by 'z' and we can do a few things here:

print z.namelist()
# A list with the names of all the files in the zip you just downloaded
# We can use z.namelist()[1] to refer to 'ny.gdp.pcap.cd_Indicator_en_csv_v2.csv'

with z.open(z.namelist()[1]) as f:
# Opens the 2nd file in the zip
csvr = csv.reader(f)
for row in csvr:
print row

有关详细信息,请参阅 ZipFile DocsStringIO Docs

关于python - 如何从世界银行的数据集中下载 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29167727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com