我正在学习如何使用JSON对象的教程(链接:https://www.youtube.com/watch?v=Y5dU2aGHTZg)。当他们运行代码时,他们没有错误,但我做到了。它与不同的Python版本有关吗?
from urllib.request import urlopen
import json
def printResults(data):
theJSON = json.loads(data)
print (theJSON)
def main():
urlData ="http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson"
webUrl = urlopen(urlData)
print(webUrl.getcode())
if (webUrl.getcode()==200):
data = webUrl.read()
printResults(data)
else:
print ("You failed")
main()
答案 0 :(得分:5)
从HTTPResponse
object返回的urlopen
读取bytes
数据(原始二进制数据),而不是str
数据(文本数据),而json
模块工作与str
。您需要知道(或检查标头以确定)用于收到的数据的编码,并在使用decode
之前适当json.loads
。
假设它是UTF-8(大多数网站都是),你可以改变:
data = webUrl.read()
为:
data = webUrl.read().decode('utf-8')
它应该解决你的问题。
答案 1 :(得分:0)
我认为他们使用的是不同版本的urllib
尝试使用urllib3并执行以下导入:
from urllib import urlopen
希望这是解决问题的方法