繁体   English   中英

python中JSON的Unicode解码错误

[英]Unicode Decode Error for JSON in python

我正在尝试将GET请求发送到我知道使用python以JSON形式返回数据的URL。 但是,我在第21行不断收到Unicode解码错误:

Traceback (most recent call last):
  File "MeetupQueryScript.py", line 21, in <module>
    member = json.load(object)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 278, in load
    **kw)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe7 in position 20: invalid continuation byte

有什么想法吗?

import urllib2
import json

key = '#########'

url = "https://api.meetup.com/2/groups?&sign=true&zip=78705&page=1&key=" + key + "&&sign=true"
object  = urllib2.urlopen(url)
#print [method for method in dir(object) if callable(getattr(object, method))]                                                  
#print object.next()                                                                                                            
groupList = json.load(object)["results"]
groupIDs = []

for group in groupList:
    groupIDs.append(group["id"])

members = []

for id in groupIDs:
    url = "https://api.meetup.com/2/members?&sign=true&group_id=" + str(id) + "&key=" + key
    object = urllib2.urlopen(url)
    member = json.load(object)
    members.append(member)

print members

您从metup获得的数据是latin1编码的(打印'\\ xe7'.decode('latin1')结果为'ç')。 我用member = json.load(object,encoding='latin1')尝试了您的代码,它起作用了。

我建议请求虽然,由于有一个更方便的接口吧:

import requests

url = "https://api.meetup.com/2/groups?&sign=true&zip=78705&page=1&key=" + key + "&&sign=true"
groupList = requests.get(url).json()["results"]
groupIDs = [] 

for group in groupList:
    groupIDs.append(group["id"])

    members = []

for id in groupIDs:
    url = "https://api.meetup.com/2/members?&sign=true&group_id=" + str(id) + "&key=" + key
    member = requests.get(url).json()
    members.append(member)

print members

我建议不要在代码中隐藏object 另请参阅python样式指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM