Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
属性错误:';str';对象没有属性';阅读';python_Python_Json - Fatal编程技术网

属性错误:';str';对象没有属性';阅读';python

属性错误:';str';对象没有属性';阅读';python,python,json,Python,Json,代码如下: import urllib, json, unicodedata, webbrowser url = "https://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&rnlimit=10&format=json" response = urllib.urlopen(url) data = json.loads(response.read()) while Tr

代码如下:

import urllib, json, unicodedata, webbrowser

url = "https://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&rnlimit=10&format=json"



response = urllib.urlopen(url)
data = json.loads(response.read())
while True:
    if data.get("data") == None:
        print "server error, trying again"
        data = json.loads(response.read())
    else:
        break

for a in data["query"]["random"]:
    print a["title"]
    userread = raw_input("Would you like to read this article? y/n")
    if userread.lower() == "y":
        articleid = a["id"]
        articleurl = "https://en.wikipedia.org/?curid=" + articleid
        webbrowser.open_new(articleurl)
现在,for循环没有那么重要,因为我遇到了以下错误:

  File "randomwiki.py", line 12, in <module>
    data = json.loads(response.read())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, 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 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
文件“randomwiki.py”,第12行,在
data=json.load(response.read())
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/_init__.py”,第338行,加载
返回\u默认\u解码器。解码
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第366行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第384行,原始解码
raise VALUERROR(“无法解码JSON对象”)
ValueError:无法解码任何JSON对象

url是Wikipedia的JSON随机页面文章API。我不确定是什么问题。有什么帮助吗

您从
urllib.read
函数接收字节对象,但
json.loads
接收字符串。 如果需要,您可以使用
请求
模块:

import requests
response = requests.get(url)
data = json.loads(response.read())
当然,您也可以对
urllib.read
函数的输出进行解码

data = json.loads(response.read().decode())