2016-04-02 1 views
0

私はコンピュータサイエンスに関しては初心者です。私のクラスでは、特にこのサイトから、地震データやテキストファイルを扱うプロジェクトに取り組んでいる:Python:Urllibの問題

http://www.choongsoo.info/teach/mcs177-sp12/projects/earthquake/earthquakeData-02-23-2012.txt

ここでプロジェクトからの情報です。

YYYY/MM/DDの形式で2つの日付をとり、上記のUSGS URLから地震データにアクセスし、緯度、経度、緯度、経度を表す4つの数値のリストを返す、parseEarthquakeDataプロシージャの契約書、docstring、経度、大きさおよび深さ。外側のリストには、指定された日付間の地震ごとに、これらの4つの数字のリストの1つが含まれている必要があります。

注:初版の教科書をお持ちの場合は、2番目のエディションで修正された2つのエラーがあります。まず、初版の教科書には誤字があります:urllibの代わりにurllib.requestを使います。次に、Webから読み取ったものをASCII形式でデコードする必要があることを忘れないでください。あなたは、変数のmyStringに文字列を読み込む場合たとえば、あなたはでそれを解読することができます

decodedString = myString.decode(「アスキー」)

私がこれまで持っていることは次のとおりです。

import urllib 
# 
def parseEarthquakeData(date1,date2): 
    quakeFile=urllib.urlopen('http://www.choongsoo.info/teach/mcs177-sp12/projects/earthquake/earthquakeData-02-23-2012.txt') 
    latitude=[] 
    longitude=[] 
    magnitude=[] 
    depth=[] 
    for i in quakeFile: 
     i=i.decode('ascii') 
     splitData=i.split(',') 
     if betweenDates(splitData[0],date1,date2): 
      latitude.append(splitData[2]) 
      longitude.append(splitData[3]) 
      magnitude.append(splitData[4]) 
      depth.append(splitData[5]) 
    totalList=[] 
    totalList.append(latitude) 
    totalList.append(longitutde) 
    totalList.append(magnitude) 
    totalList.append(depth) 
    return totalList 

と私はこれを取得Pythonシェルの中に関数を入力するとき:私は、Pythonのバージョン3.5.1 を持って

parseEarthquakeData("2012/02/23","2012/02/22") 

Traceback (most recent call last): 
    File "<pyshell#68>", line 1, in <module> 
    parseEarthquakeData("2012/02/23","2012/02/22") 
    File "/Users/BaronRitic/Desktop/Python/Project 6/betweenDates.py", line 17, in parseEarthquakeData 
    quakeFile=urllib.urlopen('http://www.choongsoo.info/teach/mcs177-sp12/projects/earthquake/earthquakeData-02-23-2012.txt') 
AttributeError: module 'urllib' has no attribute 'urlopen' 

私はまだ用語やプロセスへのすべての比較的新しいですses。私はurllibモジュールの使い方を完全には分かっていません。どんな助けでも大歓迎です!

PS私は通常これを最後に行うため、契約は空です。

答えて

0

コードを書く前にいくつかのPython 2.7の例を見てきたようですね。

Python 3では、urlopen関数はurllibの内部にはありません。内部はurllib.requestです。

from urllib.request import urlopen 

そして、単に以下urlopenを使用します。だからあなたのスクリプトの最初の行がなければなりません。

しかし、クラスがPython 2をコード例として使用している場合は、Python 2.7をインストールする方がよいでしょう(ただし、インストラクタにPython 3に切り替えてください!)。

+0

私が間違っていたことの1つは、urllibの代わりにurllib.requestを使用すると言ったノートを間違って読んだことでした。私の頭の中で私はそれを反転させた。私のインストラクターは私たちに最新バージョンを使用させています。彼自身は最新のバージョンを使用していませんが... 別の質問はどのように私はasciiをデコードするのですか? Pythonは、io_TextIOBaseがその機能を持っていないことを私に伝え続けます。私は実際に私が正しい出力であると仮定したものを私に与えるために私の機能を得ることに成功しましたが、今私はこのプロジェクトのデコード部分が何であるか疑問に思っています。誰かがこれを私に説明できるのだろうか?そして、あなたにcodeapeありがとう! –