ValueError: too many values to unpack (expected 2) (недостаточно переменных для распаковки значений)

Этот код:

import requests

import pandas as pd

names=['Abram/', 'Acker/', 'Acton/', 'Addington/', 'Adley/', 'Ainsley/', 'Ainsworth/', 'Alby/', 'Allerton/', 'Alston/', 'Altham/', 'Alton/', 'Anderton/', 'Ansley/', 'Anstey/', 'Appleton/', 'Asheton/', 'Ashley/', 'Ashton/', 'Astley/', 'Atherton/', 'Atterton/', 'Axton/', 'Badger/']

c=0

while c<24:

    response=requests.get('https://www.instagram.com/', params=[names[c]])

    if response.status_code==200:

        print('Success!')

    elif response.status_code==404:

        print('Not Found.')

    else:

        print('Unknown Error')

    c=+1

Вызывает ошибки:

Traceback (most recent call last):

File "/home/anon/eclipse-workspace/3/src/file3.py", line 11, in <module>

response=requests.get('https://www.instagram.com/', params=[names[c]])

File "/usr/lib/python3/dist-packages/requests/api.py", line 75, in get

    return request('get', url, params=params, **kwargs)

  File "/usr/lib/python3/dist-packages/requests/api.py", line 60, in request

    return session.request(method=method, url=url, **kwargs)

  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 519, in request

    prep = self.prepare_request(req)

  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 452, in prepare_request

    p.prepare(

  File "/usr/lib/python3/dist-packages/requests/models.py", line 313, in prepare

    self.prepare_url(url, params)

  File "/usr/lib/python3/dist-packages/requests/models.py", line 431, in prepare_url

    enc_params = self._encode_params(params)

  File "/usr/lib/python3/dist-packages/requests/models.py", line 97, in _encode_params

    for k, vs in to_key_val_list(data):

ValueError: too many values to unpack (expected 2)

Подскажите, как их можно исправить


Ответы (1 шт):

Автор решения: Стас

Эта ошибка переводится слишком много переменных для распаковки значений. Смотрим на строку с комментарием в моём коде и смотрим на ту же строку в вашем - и видим, у вас там: params=[names[c]] значит вы берёте значение одного элемента, и превращаете его в список из одного элемента (т.к. всё это положено в квадратные скобочки). Убираем их и, код теперь работает. В качестве запроса теперь передаётся переменная

import requests

import pandas as pd

names=['Abram/', 'Acker/', 'Acton/', 'Addington/', 'Adley/', 'Ainsley/', 'Ainsworth/', 'Alby/', 'Allerton/', 'Alston/', 'Altham/', 'Alton/', 'Anderton/', 'Ansley/', 'Anstey/', 'Appleton/', 'Asheton/', 'Ashley/', 'Ashton/', 'Astley/', 'Atherton/', 'Atterton/', 'Axton/', 'Badger/']

c=0

while c<24:

    response=requests.get('https://www.instagram.com/', params= names[c]) #здесь ошибка

    if response.status_code==200:

        print('Success!')

    elif response.status_code==404:

        print('Not Found.')

    else:

        print('Unknown Error')

    c=+1
→ Ссылка