#python
#python
Вопрос:
Я использую две строки кода из документа API, который выдает изображение ниже. Единственная информация, которую я хочу, это значение «закрыть» (112). Как мне это получить?
response = requests.request("GET", url, headers=headers)
print(response.text)
введите описание изображения здесь
Из исследования похоже, что он выплевывает словарь? Тем не менее, я попробовал следующий код, но он выдает ошибку:
for values in response
print(values, "Key balue", response[values])
#error
File "hub.py", line 17
for values in response
^
SyntaxError: invalid syntax
Комментарии:
1. Вам нужно двоеточие.
Ответ №1:
кажется, вам не хватает двоеточия в конце цикла for. Попробуйте это:
for values in response:
print(values, "Key value", response[values])
В качестве альтернативы, вы могли бы попробовать использовать функцию enumerate следующим образом:
for key, value in enumerate(response):
print(key, "Key value", value)
Комментарии:
1. Это называется двоеточием, а не точкой с запятой.
2. Спасибо, эта ошибка устранена! Теперь он говорит: «AttributeError: объект ‘Response’ не имеет атрибута ‘values'»…. Есть идеи? :/
3. Я добавил другой метод, используя функцию enumerate, попробуйте использовать это. Я понятия не имею, почему ваш код выдает ошибку атрибута.
4. @BhavyeMathur
values
не является атрибутомResponse
объекта в Pythonrequests
. Рассмотрев вопрос более подробно, похоже, что он хочет проанализировать ответ JSON, поэтому нужно начать с загрузки его в формате JSON. (Я добавил отдельный ответ по этому поводу.)5. @alani Ах, это имело бы смысл. Я думал о
requests
как о простом словаре Python.
Ответ №2:
>>> response = {1:"one", 2:"two", 3:"three"}
>>> type(response)
<type 'dict'>
>>>
>>> for item in response:
... print item
...
1
2
3
>>> for item in response.values():
... print item
...
one
two
three
>>>
>>> for item in response.keys():
... print item
...
1
2
3
Комментарии:
1. Спасибо, что избавился от синтаксической ошибки! но появилось другое: «AttributeError: объект ‘Response’ не имеет атрибута ‘values'»…. есть идеи? :/
Ответ №3:
Похоже, у вас есть ответ JSON, и вам нужно проанализировать его как JSON. requests
Модуль упрощает это с response.json()
Трудно понять, из чего именно состоит ответ, потому что вы показали его в виде изображения, которое теряет часть текста, а не вставляете в виде текста в вопрос. Но, похоже, вы хотите что-то вроде этого:
response = requests.request("GET", url, headers=headers)
for key, value in response.json()["quote"].items():
print(key, value)
Кстати, вы можете написать первую строку более просто, используя get
метод.
response = requests.get(url, headers=headers)