2

我应该编写一个执行以下操作的函数

编写程序 parseEarthquakeData 的合同、文档字符串和实现,该程序接受 YYYY/MM/DD 格式的两个日期,从上述 USGS URL 访问地震数据并返回一个由四个数字组成的列表,这些数字代表纬度、经度、震级和深度。外部列表应包含给定日期之间每次地震的这些四个数字列表之一。

该函数将获取两个日期并访问此 url并提供地震数据。这是我到目前为止所拥有的。我已经编写了 betweenDates 方法,它可以正常工作。它需要三个日期,如果第一个日期在最后两个日期之间,则返回 true。到目前为止,这是我的 parseEarthquake。

def parseEarthquakeData(date1, date2):
    dataFile = urllib.request.urlopen("http://neic.usgs.gov/neis/gis/qed.asc")
    latList = []
    longList = []
    magList = []
    depthList = []
    for aline in dataFile:
        aline = aline.decode(ascii)
        splitData = aline.split(',')
        if (betweenDates(splitData[0],date1,date2)):
            latList.append(splitData[2])
            longList.append(splitData[3])
            magList.append(splitData[4])
            depthList.append(splitData[5])
    finalList=[]
    finalList.append(latList)
    finalList.append(longList)
    finalList.append(magList)
    finalList.append(depthList)
    return finalList

它给了我错误。

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    parseEarthquakeData("2013/07/05","2013/07/10")
  File "C:\Python33\plotEarthquakes.py", line 47, in parseEarthquakeData
    line = aline.decode(ascii)
TypeError: decode() argument 1 must be str, not builtin_function_or_method

我不确定出了什么问题。任何帮助将不胜感激。

4

1 回答 1

5

你忘记了引号:

aline = aline.decode('ascii')

您当前正在做的是传递内置函数ascii,这会让人decode感到困惑,并抛出您现在看到的错误。

这应该可以解决它,希望这会有所帮助!

于 2013-11-03T16:09:44.143 回答