从网上下载天气数据,清理它,然后保存到一系列逗号分隔的文件?

2024-03-29 12:55:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是计算美国四个城市2017年的月平均降水量 国家。我收到了一份文件(站点.csv)包含四个城市的站点标识符 以及一个在线访问天气数据的网址。我的第一个任务是创建一个脚本 每个站点2017年的月度天气数据保存在站点文件中,并保存为 分开的文件。这将导致总共48个文件(4个站点x 12个月)。你知道吗

这里是什么“站点.csv“看起来像:

KCASANFR131,37.778,-122.408
KDCWASHI48,38.913,-77.031
IBRITISH359,49.256,-123.245
KNYNEWYO639,40.755,-74.007

我的数据来自:www.underground.com你知道吗

具体编辑行:

https://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=KMDLAURE5&year=2018&month=2&graphspan=month&format=1

我的问题是具体做到这一点:

手动创建一个新目录(右键单击,创建新文件夹),在其中保存48个天气文件。 这是一种很好的做法,因为您希望将数据与脚本分开。将每个文件保存到 使用­.csv格式的数据目录

示例:KDCWASHI48-04-2017.csv

我想我已经接近了,但还没有完全保存每个月的温度数据。在我有了温度数据后,我需要将其保存到一个文件中,然后将该文件发送到我创建的目录文件中。你知道吗

以下是迄今为止我的代码:

import urllib


def accessData(Id, Month):
    url = "https://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=" + str(Id) + "&year=2017&month=" + str(Month) + "&graphspan=month&format=1"
    infile = urllib.urlopen(url)
    readLineByLine = infile.readlines()
    infile.close()

    return readLineByLine


f = open('stations.csv', 'r')

for line in f.readlines():
    vals = line.split(',')

    for j in range(1,13): # accessing months here from 1 to 12, b/c 13 exclusive

        data = accessData(line, j)

        filename = "{}-0{}-2017.csv".format(vals[0], j)

        row_count = len(data)

        for i in range(2, row_count):
            if(data[i] != '<br>\n' and data[i] != '\n'):
                writeFile = open(filename, 'w')
                writeFile.write(data[i])

Tags: 文件csv数据in目录comformatfor
1条回答
网友
1楼 · 发布于 2024-03-29 12:55:12

您可以使用创建目录操作系统mkdir. 你知道吗

import os

os.mkdir('dirname')

可以使用移动文件shutil.移动你知道吗

import shutil

shutil.move("/path/to/src", "/path/to/dst")

最后,我建议您使用python3.6和请求。尤其是一个新项目。你知道吗

import requests

def accessData(geo_id, month):
    # id is a built-in function. We don't want to trample those :)
    url = f"https://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID={geo_id}&year=2017&month={month}&graphspan=month&format=1"
    r = requests.get(url)

    return r.text.split()

python2很快就要下线了,计划在2020年结束使用,许多包已经开始支持python3了

相关问题 更多 >