2017-03-16 28 views
0

私は完全にここにこだわっています...私は使用していると思われるImを持っていて、データを読み込み、マグニチュード5以上の地震のリストを作成しようとしています。今私はデータを印刷する機能を得ることができますが、そのすべてがそれぞれの地震が独自の行にあるのではなく、長い線で印刷されています。再びPython:Webからファイルを読み込み、データからリストを作成するには?

import urllib.request 

def readeqi(): 

    maglist = [] 

    with urllib.request.urlopen('http://earthquake.usgs.gov/fdsnws/event/1/\ 
     query?format=csv\ 
     &starttime=1916-02-01\ 
     &latitude=44.0519\ 
     &longitude=-123.0867\ 
     &maxradiuskm=250\ 
     &minmagnitude=5') as eq: 

     line1 = eq.readline() 
     line2 = eq.readline() 
     line2 = line2.decode() 
     line2 = line2.strip().split(',') 
     mag = float(line2[4]) 
    print(mag) 

、私は大きさの値を取り、リストを作成しようとしていますが、私はどのようにわからない:大きさの値を追加する方法をそうイムわからない...ここでは機能やURLはマグニチュード値にアクセスする。誰かが私を正しい方向に向けることができますか?

EDIT:line1、line2、line2.decode、magを追加しました これで最初の大きさを得る方法を知りました。しかし、どうすればそれらを5以上で得ることができますか?

EDIT2:

わかりましたので、私は、私は本当に助けて欲しいものを推測...私は自分のラインのそれぞれにデータを取り除くことができる方法ですか?同様に、forやwhileループを書くと、line2.strip()は何をしますか?

+0

'AttributeError:module 'urllib'には属性 'request''がありません これはどのバージョンのPythonですか? – Denziloe

+0

バージョン3.6私が鉱山を走らせてもエラーは発生しません。 – user2951723

答えて

3
import requests 
import csv 

url = 'http://earthquake.usgs.gov/fdsnws/event/1/query' 

query = { 
    'format': 'csv', 
    'starttime': '1916-02-01', 
    'latitude': '44.0519', 
    'longitude': '-123.0867', 
    'maxradiuskm': '250', 
    'minmagnitude': '5' 
} 


response = requests.get(url, params=query) 
lines = (line.decode('utf-8') for line in response.iter_lines()) 
csvreader = csv.DictReader(lines) 

したいと今のデータを反復:

>>> g = iter(csvreader) 
>>> next(g)['mag'] 
'6' 
>>> next(g)['mag'] 
'5.9' 
>>> next(g)['mag'] 
'5.9' 
>>> next(g)['mag'] 
'6' 
>>> next(g)['mag'] 
'5.6' 
-1

代替答えを、ちょうどキックのために:データを掻き取るための美しいスープを使用してみてください。それはいくつかの素晴らしい書式設定ツールを持っています。

関連する問題