Python 如何从urlopen()响应返回JSON格式?

Python 如何从urlopen()响应返回JSON格式?,python,urllib,Python,Urllib,我是python的新手,在尝试这样的代码时,我得到了一些奇怪的字符 import json from urllib.request import urlopen with urlopen( "http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=MSFT&region=1&lang=en") \ as response: source = response.

我是python的新手,在尝试这样的代码时,我得到了一些奇怪的字符

import json
from urllib.request import urlopen

with urlopen(
        "http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=MSFT&region=1&lang=en") \
            as response:
    source = response.read()
    print(source)
我希望响应是JSON格式的,但我得到了如下奇怪的响应:


我通过以下方法获得了预期的输出:


我使用以下方法获得了预期的输出:


你看到的是一个字节数组。您可以通过字符串前面的“b”来判断。您需要将这些字节解码为字符,要这样做,您需要知道正在使用什么字符编码。一个很好的猜测是响应。解码(“utf-8”)。非常感谢。我在
source=response.read()
一行之前尝试了您提到的
response.decode(“utf-8”)
,但似乎不起作用,我遇到了错误。非常感谢。我使用了这一行
source=source.decode(“utf-8”)
,解决了这个问题。非常感谢。我已经发布了问题和收到的回复。我现在知道这是一个字节数组,使用decode方法后问题就解决了。你看到的是一个字节数组。您可以通过字符串前面的“b”来判断。您需要将这些字节解码为字符,要这样做,您需要知道正在使用什么字符编码。一个很好的猜测是响应。解码(“utf-8”)。非常感谢。我在
source=response.read()
一行之前尝试了您提到的
response.decode(“utf-8”)
,但似乎不起作用,我遇到了错误。非常感谢。我使用了这一行
source=source.decode(“utf-8”)
,解决了这个问题。非常感谢。我已经发布了问题和收到的回复。我现在知道这是一个字节数组,使用解码方法解决了这个问题。我只需复制并粘贴问题中的代码,就得到了预期的结果@YasserKhalil,你使用的是什么版本的Python?我使用的是Anaconda3,我得到了预期的结果,只是复制并粘贴了问题中的代码@YasserKhalil,你用的是什么版本的Python?我用的是Anaconda3
import requests

url = 'http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=MSFT&region=1&lang=en'

rsp = requests.get(url)
print(rsp.json())