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

2024-09-30 16:39:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一个元素列表(是文本),我正在尝试获取这个列表中包含单词"stars"的第一个元素。我试过这个(除其他几种方法外),但它不起作用,我完全迷路了。你知道吗

列表的名称为name\u box:

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

(我对编码很陌生,所以请随时给我一些提示)


Tags: 方法namein文本名称box元素列表
2条回答

我更喜欢使用发电机:

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

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

# 'stars'

解释

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

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

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

[根据评论编辑]

when i print my name_box, those ' are indeed missing

可能你的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)

相关问题 更多 >