所以我完全被困在这里......我有一个我应该使用的网址,我试图读取数据并列出5级或更大的地震列表。现在我可以使用我的功能打印出数据,但它全部印在几条长线上,而不是每个地震都在他们自己的线上。所以我不知道如何附加幅度值...这是函数和网址:
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)
同样,我正在尝试获取幅度值并创建列表,但我不确定如何仅访问幅度值。有人能指出我正确的方向吗?
编辑:添加了line1,line2,line2.decode和mag 所以我想出了如何获得第一个量级。但是我怎样才能让他们全部超过5?
EDIT2:
好吧所以我想我真正想要帮助的是......我怎样才能将数据剥离到他们自己的每一行?就像我怎么能写一个for或while循环来做line2.strip()呢?
答案 0 :(得分: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 :(得分:-1)
替代答案,仅限于踢:尝试使用Beautiful Soup来抓取数据。它有一些很好的格式化工具。