【问题标题】:Decode JSON date from internet从互联网解码 JSON 日期
【发布时间】:2018-04-18 14:46:01
【问题描述】:

我从 Internet (Stackoverflow API) 获取 JSON 并尝试对其进行解码:

import urllib.request

url = "https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=stackoverflow"
fp = urllib.request.urlopen(url)
mybytes = fp.read()
mystr = mybytes.decode("utf8")
fp.close()

print(mystr)

我得到了错误:

Traceback(最近一次调用最后一次):文件“code.py”,第 6 行,在 mystr = mybytes.decode("utf8") UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

为什么以及如何解决?

【问题讨论】:

标签: python


【解决方案1】:

使用requests:

import requests

url = "https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=stackoverflow"

res = requests.get(url)
if res.status_code == 200:
    print(res.json())

【讨论】:

    【解决方案2】:

    在 python 中编码和解码 utf-8 似乎很棘手。我是否建议也包括 .encode() 。

    import urllib.request
    
    url = "https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=stackoverflow"
    fp = urllib.request.urlopen(url)
    mybytes = fp.read()
    mystr = mybytes.encode().decode()
    fp.close()
    
    print(mystr)
    

    另外,是的,请使用请求。太棒了:http://docs.python-requests.org/en/master/

    【讨论】:

      猜你喜欢
      • 2015-07-31
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多