Python - функция deq печатает 8 раз - мешает печатать только один раз?

1

Поэтому я сыграл abit с deq и почти подошел к финишу, но был обеспокоен тем, что он печатает 8 раз из-за длины deq, пока я просто хочу, чтобы он распечатывался один раз.

То, что я сделал, это:

old_list = []
deq = deque(old_list, maxlen=8)
url = 'https://www.supremecommunity.com/restocks/eu/'

while True:
    try:
        new_list = []

        bs4 = soup(requests.get(url).text, "html.parser")

        for item in bs4.findAll('div', {'class': 'restock-item'}):
            if item.find('div', {'class': 'user-detail'}):
                name = item.find('h5', {'class': 'handle restock-name'}).string
                color = item.find('h6', {'class': 'restock-colorway'}).string

                new_list.append(name + color)

        for newitem in new_list:
            if newitem not in deq:
                print(name)
                print(color)
                deq.append(newitem)

            else:
                print('Sleeping 5 sec')
                time.sleep(5)
    except:
        continue 

В основном он проверяет веб-сайт и печатает имя и цвет, а затем добавляет его в список deq. Однако мой вывод выводит 8 раз с тем же именем и цветом из-за maxlen = 8, и мой вопрос:

Как я могу сделать это, чтобы он печатался только один раз?

Теги:
deque

1 ответ

1
Лучший ответ

Вы всегда выдавались те же переменные, name и color, как они, где, наконец, определяется в for -loop выше.

      name = item.find('h5', {'class': 'handle restock-name'}).string
      color = item.find('h6', {'class': 'restock-colorway'}).string

Когда вы print(name) и print(color) в секунду for -loop, это всегда относится к последним значениям, которые имеют name и color.

Чтобы решить эту проблему, вы должны обратиться к переменной newitem в своих заявлениях на печать.

РЕДАКТИРОВАТЬ:

Здесь вы просто конкатенируете две строки.

new_list.append(name + color)

Я предлагаю вам составить список списков.

new_list.append([name,color])

Затем вы можете использовать print(newitem[0]) и print(newitem[1]) для печати разных имен и цветов.

  • 0
    О, это на самом деле правда ... есть ли другой способ решить это, не newitem, где я просто хочу распечатать name and color отдельности?
  • 0
    Я отредактировал ответ
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню