Python:TypeError:“ NoneType”对象无法在行结果下标= data ['responseData'] ['results']

时间:2018-09-22 08:43:18

标签: python

运行代码时,结果是这样的: TypeError:“ NoneType”对象不可下标

我是Python初学者。我刚刚从一个针对Python初学者的网站中选择了一个示例项目:https://www.pythonforbeginners.com/code-snippets-source-code/google-command-line-script/ 我正在使用Pycharm社区版。参考在线网络搜索帮助后,我编辑了一些代码来运行,但最终我被这个错误所困扰。 感谢您的帮助。

import json
from pip._vendor.distlib.compat import raw_input
import urllib.request

url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&"

query = raw_input("What do you want to search for ? >> ")

query = urllib.parse.urlencode({'q': query})

response = urllib.request.urlopen(url + query).read()

data = json.loads(response)

results = data['responseData']['results']

for result in results:
    title = result['title']
    url = result['url']
    print(title + '; ' + url)

1 个答案:

答案 0 :(得分:1)

预计网站会向您发送包含responseData的内容,并且应该包含结果,但是由于某些原因(错误?),他们向您发送了不同的数据。 始终在使用前先检查一下。

以下是检查您是否收到期望的方法:

if 'responseData' in data:
      if 'results' in data['responseData']:
              #-- do stuff 
      else:
              print('Error: no results. Data was:' + data)
else:
      print('Error: no responses. Data was:' + data)

另外,您可以尝试使用pprint命令打印数据结构,以查看所获得的内容:

from pprint import pprint
pprint(data)

这将帮助您在所有步骤中查看您得到的实际响应,数据是什么,等等。