首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python函数输出8次-防止只打印一次?

Python函数输出8次-防止只打印一次?
EN

Stack Overflow用户
提问于 2018-08-23 09:55:19
回答 1查看 59关注 0票数 1

所以我已经和deq玩过abit,并且几乎达到了终点,但人们担心由于deq的长度,它已经打印了8次,而我只想打印一次。

我所做的是:

代码语言:javascript
复制
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次相同的名称和颜色:

我怎么做才能印出来一次?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 10:09:31

您总是打印相同的变量namecolor,就像它们在上面的for-loop中定义的一样。

代码语言:javascript
复制
      name = item.find('h5', {'class': 'handle restock-name'}).string
      color = item.find('h6', {'class': 'restock-colorway'}).string

当您在第二个print(name) -loop中打印for和-loop时,它总是引用namecolor所拥有的最后一个值。

要解决这个问题,您应该参考打印语句中的变量newitem

编辑:

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

代码语言:javascript
复制
new_list.append(name + color)

我建议你把它列成一个清单。

代码语言:javascript
复制
new_list.append([name,color])

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51983062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档