Python使用While循环避免重复打印

时间:2021-07-23 12:36:39

标签: python python-3.x

我使用 Python Selenium 来解析一些 live data (Bets) ,我使用 While loop 这是我代码中的一些逻辑

def parse():
    while True:
        x = driver.find_element_by_xpath('//*[@id="bets-history"]/li[0]').text
        print(x)

此代码有效但输出为

1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x

只打印一张照片的最佳方法是什么?例如像这样

1.54x
13.5x

5 个答案:

答案 0 :(得分:2)

您可以将第二个变量 (y) 分配给原始变量 (x),然后将新值分配给 x。然后,在 if 语句中检查它们是否不相等 (!=)。

代码:

def parse():
    x = ''
    while True:
        y = x
        x = driver.find_element_by_xpath('//*[@id="bets-history"]/li[0]').text
        if y != x:
            print(x)

答案 1 :(得分:1)

data = ['1.54x','1.54x','1.54x','1.54x','1.54x','1.54x','1.54x','1.54x','13.5x','13.5x','13.5x','13.5x','13.5x','13.5x','13.5x','13.5x']

previous_value = ''
for value in data:
    if value != previous_value:
        print(value)
        previous_value = value

答案 2 :(得分:1)

由于您只希望每个值打印一次,因此您可以定义一个列表 xs

对于每个定义的 x,如果 x 的值已经在 xs 列表中,不要打印或附加 x 的值到 {{ 1}};否则,打印 xs 的值并将 x 的值附加到 x

xs

答案 3 :(得分:0)

您必须存储唯一接收到的值。稍后您可以检查新收到的值是否已经存在,然后不要打印此值,否则将其打印到控制台。

def parse():
    stored_data = []
    while True:
        x = driver.find_element_by_xpath('//*[@id="bets-history"]/li[0]').text
        if x not in stored_data:
            print(x)
            stored_data.append(x)

答案 4 :(得分:0)

使用 set 代替 list 以加快查找速度。

由于您的问题中只有两个值,因此在 listset 中查找不会有太大区别。但如果有 n 个值,

<块引用>

list 将花费 O(n) 时间来查找

<块引用>

set 只需要 O(1) 的时间来查找

def parse():
    s = set()
    while True:
        x = driver.find_element_by_xpath('//*[@id="bets-history"]/li[0]').text
        if x not in s:
           s.add(x)
           print(x)
相关问题