获取条件列表中的第一个元素

问题描述 投票:0回答:2

我目前有一个元素列表(这是文本),我试图得到这个列表的第一个元素包含单词"stars"。我试过这个(在其他几个方面),但它不起作用,我很丢失。

列表的名称是name_box:

i = 0
for element in name_box:
    if "stars" in element:
        note_finale = element
        print(note_finale)
        break
    else:
        i = i+1  

(我在编码时很新,所以随时给我任何提示)

python python-3.x list variables
2个回答
2
投票

我更喜欢使用发电机:

lst = ['a', 'b', 'c', 'stars', 'starstruck', 'd', 'e', 'f']

res = next(i for i in lst if 'stars' in i)

# 'stars'

说明

  • 生成器表达式循环遍历每个元素,直到它到达包含“星号”的元素。然后在调用时返回此元素...
  • next是一个内置函数,它检索迭代器的下一项。

0
投票

这就是你如何做到这一点的一个例子:

name_box = ['<span class="a-icon-alt">Facebook</span>', 
            '<span class="a-icon-alt">Twitter</span>', 
            '<span class="a-icon-alt">Pinterest</span>', 
            '<span class="a-icon-alt">Free Shipping for Prime Members</span>', 
            '<span class="a-icon-alt">4.5 out of 5 stars</span>', 
            '<span class="a-icon-alt">Back</span>', 
            '<span class="a-icon-alt">4.4 out of 5 stars</span>', 
            '<span class="a-icon-alt">Prime</span>', 
            '<span class="a-icon-alt">4.6 out of 5 stars</span>']

for e in name_box:
    if 'stars' in e:
        print(e)

注意:我必须在列表中的字符串周围放置'',因为您提供的输入数据丢失了。

输出:

<span class="a-icon-alt">4.5 out of 5 stars</span>
<span class="a-icon-alt">4.4 out of 5 stars</span>
<span class="a-icon-alt">4.6 out of 5 stars</span>

如果你真的想首先打破stars你可以把一个break声明,例如:

for e in name_box:
    if 'stars' in e:
        print(e)
        break

[根据评论编辑]

当我打印我的name_box时,那些'确实缺失了

可能是你的name_box真的是一个字符串,而不是一个列表。所以你需要split()使它成为一个列表,例如:

name_box_string = '[<span class="a-icon-alt">Facebook</span>, <span class="a-icon-alt">Twitter</span>, <span class="a-icon-alt">Pinterest</span>, <span class="a-icon-alt">Free Shipping for Prime Members</span>, <span class="a-icon-alt">4.5 out of 5 stars</span>, <span class="a-icon-alt">Back</span>, <span class="a-icon-alt">4.4 out of 5 stars</span>, <span class="a-icon-alt">Prime</span>, <span class="a-icon-alt">4.6 out of 5 stars</span>]'

name_box_list = name_box_string[1:-1].split(',')

for e in name_box_list:
    if 'stars' in e:
        print(e)
© www.soinside.com 2019 - 2024. All rights reserved.