ValueError: слишком много значений для распаковки (ожидается 3) List Python

у меня есть этот код

car = list()
model = list()
year = list()
for cars in self.browser.find_elements_by_xpath('//td[@data-field="action_id"]'):
    car.append(cars.text)

for models in self.browser.find_elements_by_xpath('//td[@data-field="task_id"]'):
    model.append(models.text)

for years in self.browser.find_elements_by_xpath('//td[@data-field="processo"]'):
    year.append(years.text)

for x, y, z in car, model, year:
    print(x, y, z)

Я удаляю текст из каждого столбца, чтобы поместить его в список, а затем упорядоченно читаю эти 3 списка.

пример страницы

Car           Model    Year
____          _____    ____
BMW           350i     2000
Chevrolet     Cruze    2018
Ford          Mustang  2017

возвращение, которое я хочу сделать

car model year
car model year
car model year

но эта ошибка возвращается ко мне

ValueError: слишком много значений для распаковки (ожидается 3)

это просто пример, похожий на сайт, над которым я работаю


person CodeBasic    schedule 21.02.2020    source источник


Ответы (1)


используйте itertools для итерации с несколькими переменными

import itertools
#itertools.izip runs till one of the lists is exhausted
for (x, y, z) in itertools.izip(car, model, year):
   print(x, y, z)
#or 
for (x, y, z) in itertools.izip_longest(car, model, year):
   print(x ,y ,z)
#itertools.izip_longest tuns till the longest list is exhausted
#or 
for x, y, z in zip(car, model, year):
  print(x, y, z)

вы можете использовать zip или izip, но izip лучше, потому что zip вычисляет весь список сразу, izip вычисляет элементы только по запросу.

person Angry_Cder    schedule 21.02.2020