Python-deq函数可打印8次-防止仅打印一次?

时间:2018-08-23 09:55:20

标签: python deque

所以我对deq玩的有点儿,几乎快要完成了,但是有人担心由于deq的长度,它打印了8次,而我只想打印一次。

我所做的是:

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列表中。但是,由于maxlen = 8,我的输出打印出了8次相同名称和颜色的输出,而我的问题是:

我怎样才能使它只打印一次?

1 个答案:

答案 0 :(得分:1)

您总是在打印与变量namecolor相同的变量,这些变量最后在上面的for循环中定义。

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

在第二个print(name)循环中打印print(color)for时,它总是引用namecolor拥有的最后一个值。 / p>

要解决此问题,您应该在打印语句中引用变量newitem

编辑:

在这里,您只是串联两个字符串。

new_list.append(name + color)

我建议您将其设为列表列表。

new_list.append([name,color])

然后您可以使用print(newitem[0])print(newitem[1])来打印不同的名称和颜色。