Когда я запускаю код, он оказался следующим: TypeError: объект "NoneType" не является индексируемым
Я начинающий Python. Я просто выбрал образец проекта с сайта для начинающего Python: https://www.pythonforbeginners.com/code-snippets-source-code/google-command-line-script/ Я использую Pycharm Community Edition. После ссылки на онлайн-помощь по поиску в Интернете я отредактировал некоторые строки кода для запуска, но, наконец, я застрял в этой ошибке. Спасибо за помощь.
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)
Он ожидал, что веб-сайт отправит вам что-то, содержащее 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)
Это поможет вам во всех шагах, чтобы узнать, какой фактический ответ вы получили, какие данные и т.д.